关于使用sqlalchemy包,to_sql方法中文字符出错,报1366的问题
这个问题很多人在python编码都遇到过,也有一些解决方法,比如链接字符串加上数据集
dbconn=‘mysql+mysqlconnector://’+self.user+’:’+self.passwd+’@’+self.host+’:’+self.port+’/’+self.database+’?charset=utf8’,encoding=utf8
或者用mysql-connector更换pymysql,等等
如果都不起作用时,建议大家考虑问题是否出在数据库表设计的环节上,直接原因很简单:
对报1366错的表,执行show full columns from table_name;如果中文对应的列 collate为 latin1_general_ci,想办法改成 utf8_general_ci即可;
改进也很简单,
在mysql数据库console里手工敲命令修改ALTER TABLE tablename
MODIFY COLUMN name
varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci; 并把to_sql方法改成if_exists='append’即可。
但是对于希望不是每次都修改,或者希望不用手工修改,实际上需要在建库时指定,该数据库的charset和collate
因此比较彻底的改进如下:建库命令
sql=‘create database’+’ ‘+self.database+’ DEFAULT CHARSET utf8 COLLATE utf8_general_ci;’
希望对大家有帮助