Sqlalchemy中文编码问题
mysql的连接字符"mysql+mysqldb://user:password@ip:3306/dataset?charset=utf8"
create_engine中已经设定了encoding=“utf-8”,但还是出现编码问题:"UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 0-3: ",其问题的根源在于mysql创建数据库默认为latin-1。
解决方案如下:
- 直接修改mysql数据库的编码
- 用
show variables like 'character%';查看当前mysql的编码格式 - 进入工作数据库,并修改当前数据库的编码格式
ALTER DATABASE test_data CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; - 查看编码是否已经被修改,运行
show variables like 'character%';即可。 - 设定"mysql://username:password@host:3306/test_data?charset=utf8mb4"
- 为什么需要设定utf8mb4,mysql下utf8默认是utf8mb3三个字节,中文会出现4个字节
- 用
本文探讨了在使用SQLAlchemy连接MySQL数据库时遇到的中文编码问题。即使在create_engine中指定了utf-8编码,仍可能因MySQL默认的latin-1编码而引发UnicodeEncodeError。文章提供了详细的解决方案,包括如何修改数据库编码为utf8mb4,以完全支持中文四字节字符。
514

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



