【发布时间】:2021-08-13 05:50:21
【问题描述】:
我正在使用 sqlalchemy 核心来执行基于字符串的查询。我在连接字符串上将字符集设置为utf8mb4,如下所示:
"mysql+mysqldb://{user}:{password}@{host}:{port}/{db}?charset=utf8mb4"
对于一些简单的选择查询(例如,select name from users where id=XXX limit 1),当结果集包含一些 unicode 字符(例如,'、ì 等)时,它会出错并出现以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9a in position 11: invalid start byte
但错误本身是不可重现的。当我从 python shell 运行相同的查询时,它可以正常工作。但它在网络请求或后台作业时出错。
我正在使用 Python 3.8 和 sqlalchemy 1.3.24。
我还尝试使用create_engine() 将charset: utf8mb4 明确指定为connect_args 属性。
底层数据库是 mysql 5.7,所有 unicode 列都将 utf8mb4 明确设置为模式中的字符集。
更新:数据库实际上是 AWS RDS Aurora MySQL。
感谢您对错误或如何可靠地重现错误的任何见解。
【问题讨论】:
标签: python mysql sqlalchemy python-unicode