我有一个用UTF-8编码的MySQL数据库,但是当我用SQLAlchemy(Python 2.7)连接它时,我得到了带有Latin1 Unicode字符的字符串。
所以,比利时(België)的荷兰语拼写出来了
'Belgi\xeb'
而不是
'Belgi\xc3\xab'
或者,理想情况下是Unicode对象
u'Belgi\xeb'
答案 0 :(得分:7)
根据文件(http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#custom-dbapi-args):
如果use_unicode = 1参数或charset参数作为连接参数传递,则MySQLdb将容纳Python unicode对象。
如果没有此设置,许多MySQL服务器安装默认为客户端连接的latin1编码。
您需要使用
create_engine('mysql+mysqldb://HOSTNAME/DATABASE?charset=utf8')
而不仅仅是
create_engine('mysql+mysqldb://HOSTNAME/DATABASE')