Python 试图在MySQL数据库中保存特殊字符
我有一个字符串,看起来像这个Python 试图在MySQL数据库中保存特殊字符,python,mysql,python-3.x,pymysql,Python,Mysql,Python 3.x,Pymysql,我有一个字符串,看起来像这个首先,您需要确保表列具有正确的字符集设置。如果是“latin1”,则无法存储包含Unicode字符的内容 您可以使用以下查询来确定列字符集: SELECT CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='your_database_name' AND TABLE_NAME='your_table_name' AND COLUMN_NAME='description' 如果要
首先,您需要确保表列具有正确的字符集设置。如果是“latin1”,则无法存储包含Unicode字符的内容
您可以使用以下查询来确定列字符集:
SELECT CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='your_database_name' AND TABLE_NAME='your_table_name' AND COLUMN_NAME='description'
如果要更改列字符集,请遵循Mysql文档
此外,您需要确保为Mysql连接正确配置了字符集。引自Mysql文档:
字符集问题不仅影响数据存储,还影响
客户端程序和MySQL服务器之间的通信。如果你
希望客户端程序使用
字符集与默认值不同,您需要指出
哪一个。例如,要使用utf8 Unicode字符集,请发出
连接到服务器后,请执行以下语句:
SET NAMES 'utf8';
一旦字符集设置正确,您将能够执行sql语句。不需要在Python端进行编码/解码。这用于不同的目的。第一个查询给出了utf8
I init和pyMysql以及connect=pyMysql.connect(host=constants.host,user=constants.USERNAME,password=constants.password,db=constants.DATABASE,charset='utf8',port=constants.port,cursorclass=pymysql.cursors.DictCursor)
所以实际上不应该有问题吗?@PrimuS刚刚注意到有一个表情符号。列字符集需要utf8mb4。utf8不够。请参阅