项目场景:
提示:这里简述项目相关背景:
通过Python自动导入数据到MySQL数据库中的时候,报以下错误:(pymysql.err.DataError) (1366, "Incorrect string value:
问题描述
提示:这里描述项目中遇到的问题:
通过Python自动导入数据到MySQL数据库中的时候,报以下错误:(pymysql.err.DataError) (1366, "Incorrect string value:
通过大多方法,解决一部分,然后又遇到了新的问题,记录一下。
原因分析:
在处理emoji时,报错1366,原因是编码造成的
在mysql8里,字符集默认就是 utf8mb4,已支持emoji
python3默认就是utf8
原因就出在两个字符集上,utf8mb4是utf8的超集,mb4是most bytes 4的意思,专门用来兼容四字节的unicode
处理emoji时需要字符集支持unicode,utf8mb4是没问题的,但是utf8不行
只需要将python连接mysql的默认格式由utf8改为utf8mb4即可。
但是发现改了之后还是不行,然后想了一下是不是建表的时候字符集也是默认的utf8,所以把表的字段字符集也改成utf8mb4就可以导入了。
解决方案:
提示:这里填写该问题的具体解决方案:
首先修改Python连接的编码:
engine = create_engine("mysql+pymysql://root:yourpassword@localhost:3306/yt?charset=utf8mb4")
然后在修改表的字符集为utf8mb4:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
解决了导入的数据中包含emoji的报错问题。
鸣谢:解决过程参考了一下方案,挂个链接。
链接