SQLAlchemy将UTF-8作为Latin1字符串返回

时间:2013-12-10 02:17:10

标签: python unicode utf-8 sqlalchemy latin1

我有一个用UTF-8编码的MySQL数据库,但是当我用SQLAlchemy(Python 2.7)连接它时,我得到了带有Latin1 Unicode字符的字符串。

所以,比利时(België)的荷兰语拼写出来了

'Belgi\xeb'

而不是

'Belgi\xc3\xab'

或者,理想情况下是Unicode对象

u'Belgi\xeb'

1 个答案:

答案 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')