PyMySQL 警告:(1366,“不正确的字符串值:'\\xF0\\x9F\\x98\\x8D t...')
PyMySQL Warning: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8D t...')
我正在尝试使用 Pandas 和 MySQL 将数据(推文和其他 Twitter 文本信息)导入数据库。我收到以下错误:
166: Warning: (1366, "Incorrect string value: '\xF0\x9F\x92\x9C\xF0\x9F...' for column 'text' at row 3")
result = self._query(query)
166: Warning: (1366, "Incorrect string value: '\xF0\x9F\x98\x8D t...' for column 'text' at row 5")
result = self._query(query)
经过彻底搜索后,我的数据库列的设置方式似乎有问题。我已经尝试将数据库字符集设置为 UTF8 并将其整理为 utf_unicode_ci 但我仍然收到相同的错误。
以下是将数据导入数据库的代码:
#To create connection and write table into MySQL
engine = create_engine("mysql+pymysql://{user}:{pw}@{lh}/{db}?charset=utf8"
.format(user="user",
pw="pass",
db="blahDB",
lh="bla.com/aald/"))
df.to_sql(con=engine, name='US_tweets', if_exists='replace')
我正在导入的数据包含以下数据类型:'int64'、'object' 和 'datetime64[ns]'。我通过使用
将数据打印到控制台来找出这些数据类型
print(df['tweett']) >>> returns dtype 'object'
非常感谢任何帮助,谢谢!
当连接到 MySQL 并在涉及的列中时,您需要 utf8mb4
,而不是 utf8
。
更多 python 提示:http://mysql.rjweb.org/doc.php/charcoll#python(除了使用 utf8mb4
代替 utf8
。不应更改 UTF-8
。)
可以找到更详细的解释 。
更改数据库、表和列的字符集和排序规则属性以使用 utf8mb4 而不是 utf8。 docs
# For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)
我正在尝试使用 Pandas 和 MySQL 将数据(推文和其他 Twitter 文本信息)导入数据库。我收到以下错误:
166: Warning: (1366, "Incorrect string value: '\xF0\x9F\x92\x9C\xF0\x9F...' for column 'text' at row 3") result = self._query(query)
166: Warning: (1366, "Incorrect string value: '\xF0\x9F\x98\x8D t...' for column 'text' at row 5") result = self._query(query)
经过彻底搜索后,我的数据库列的设置方式似乎有问题。我已经尝试将数据库字符集设置为 UTF8 并将其整理为 utf_unicode_ci 但我仍然收到相同的错误。
以下是将数据导入数据库的代码:
#To create connection and write table into MySQL
engine = create_engine("mysql+pymysql://{user}:{pw}@{lh}/{db}?charset=utf8"
.format(user="user",
pw="pass",
db="blahDB",
lh="bla.com/aald/"))
df.to_sql(con=engine, name='US_tweets', if_exists='replace')
我正在导入的数据包含以下数据类型:'int64'、'object' 和 'datetime64[ns]'。我通过使用
将数据打印到控制台来找出这些数据类型print(df['tweett']) >>> returns dtype 'object'
非常感谢任何帮助,谢谢!
当连接到 MySQL 并在涉及的列中时,您需要 utf8mb4
,而不是 utf8
。
更多 python 提示:http://mysql.rjweb.org/doc.php/charcoll#python(除了使用 utf8mb4
代替 utf8
。不应更改 UTF-8
。)
可以找到更详细的解释
更改数据库、表和列的字符集和排序规则属性以使用 utf8mb4 而不是 utf8。 docs
# For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)