我有MySql数据库(MyISAM引擎、utf-8字符集和utf8_general_ci排序规则).此外,我还使用PyMysql驱动程序将Python3代码连接到该数据库。但是,当我试图用下面的代码获取一些行时
import pymysql
conn = pymysql.connect(host='localhost',
port=3306,
user='root',
passwd='',
db='db_name')
cur = conn.cursor()
cur.execute('SELECT * FROM my_table')
print(cur.description)
print()
for row in cur:
print(row)
cur.close()
conn.close()我的俄文专栏的输出很差
(1,‘?
我尝试提供不同的参数,如use_unicode、charset,但它们的组合都没有带来预期的结果。有了英语专栏,一切都好。那么如何获得编码良好的字符串呢?create表命令的输出
“'CREATE表
my_table(idint(11) NOT NULL AUTO_INCREMENT,ruColumnvarchar(155)默认NULL,主键(id)) ENGINE=MyISAM DEFAULT CHARSET=utf8”
发布于 2015-09-03 23:49:39
有多种可能发生的情况。
utf8。这是通过set_charset('utf8')、SET NAMES utf8或其他特定于客户端的方法完成的。(你用的是什么客户?)数据丢失了。从表中删除数据。(表定义是可以的。)所以,清理代码,重新开始。
有关Python的更多细节,请参见我的博客。
发布于 2015-09-04 13:17:56
我通过将连接驱动程序从pymysql切换到mysql-连接器-python来解决这个问题,您可以通过pip安装它。
pip install mysql-connector-python --allow-external mysql-connector-python因此,将代码更改为
import mysql
conn = mysql.connector.connect(host='localhost',
port=3306,
user='root',
passwd='',
db='db_name')输出将是正确的,无需额外指定字符集或其他参数。似乎是PyMySQL驱动程序的内部编码问题。
https://stackoverflow.com/questions/32378913
复制相似问题