_mysql.connect()无法设置字符集
由于使用pymysql连接Inception会出现问题,pymysql会判断远程mysql的版本号,但是Inception的版本号是Inception,所以会抛出异常,但pymysql并没有捕获这个异常,我又不愿意去懂pymysql源码,所以只好使用更底层一点的mysql驱动_mysql,从来带来这个问题
可以看到这个方法是不接受charset关键字参数的,所以获取到的数据中文部分都是乱码
In [1]: import _mysql
In [2]: _mysql.connect?
In [3]: conn = _mysql.connect(host='1.1.1.1', port=3003, user='root', passwd='123')
In [70]: sql
Out[70]: "select COLUMN_NAME, COLUMN_TYPE, COLUMN_KEY, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT from information_schema.columns where table_schema='uair_center' and table_name='user_oauth';"
In [76]: conn.query(sql)
In [81]: res.fetch_row()
Out[81]: ((b'create_date', b'datetime', b'', b'YES', None, b'????'),)
确实有点恶心,找了官方文档找了遍也没有找到,最后看到一个关键字参数init_command,灵光一闪,大功告成~
In [114]: conn = _mysql.connect(host='10.0.0.6', port=3306, user='uair', passwd='uair2016', init_command="set names utf8")In In [134]: conn.query(sql)
In [135]: res = conn.store_result()
In [141]: res.fetch_row()[0][5].decode()
Out[141]: '是否可用'