我有MySql数据库(MyISAM引擎、utf-8字符集和utf8-u通用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 table命令的输出
'创建表my_tableidint(11)非空自动递增,
ruColumnvarchar(155)默认为空,主键(id
引擎=MyISAM默认字符集=utf8'

最佳答案

有多种可能发生的方式。
客户端中的字节不是utf8编码的。
连接到数据库时未指定utf8。这可以通过set_charset('utf8')SET NAMES utf8或其他特定于客户的方法来完成。(你在用什么客户?)
数据丢失。从表中删除数据。(表定义是可以的)所以,清理代码并重新开始。
有关Python的更多详细信息,请参见my blog

10-02 06:09
查看更多