pyMySQL设置连接字符集

Mal*_*ats 17 python mysql unicode pymysql

我正在使用Flask和MySQL开发一个相当简单的Web应用程序.

我正在努力与unicode.用户有时会粘贴他们从Word复制的东西,并且它会被旧的智能引号所覆盖u'\u201c'.

一点点的调查表明我与MySQL的连接正在使用Latin1charset(似乎是默认值).

如何指定使用unicode进行连接?

我正在使用pyMySQL,它声称是MySQLdb的替代品.MySQLdb定义了一个对象的set_character_set(self, charset)函数connection,但pyMySQL没有(如果我尝试,我会收到错误).

Mal*_*ats 59

我通过在pyMySQL源代码中进行了解决(我曾尝试过,但找不到合适的位置!).

您可以在创建连接时指定它:

conn = pymysql.connect(host='localhost',
                       user='username',
                       passwd='password',
                       db='database',
                       charset='utf8')
Run Code Online (Sandbox Code Playgroud)

解决了我的问题.

  • 我试图使用sqlalchemy的pymysql,所以我的修复是将url更改为`mysql + pymysql:// user_name @ host_name/database_name?charset = utf8mb4`; 这个答案帮了很多忙! (5认同)