关于使用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;’
希望对大家有帮助
本文探讨了使用SQLAlchemy包时遇到的中文字符错误及1366问题,提供了多种解决方案,包括调整数据库连接字符串、更换数据库驱动和修改数据库表的字符集与校对规则。
2093

被折叠的 条评论
为什么被折叠?



