我有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_table
(id
int(11)非空自动递增,ruColumn
varchar(155)默认为空,主键(id
)引擎=MyISAM默认字符集=utf8'
最佳答案
有多种可能发生的方式。
客户端中的字节不是utf8编码的。
连接到数据库时未指定utf8
。这可以通过set_charset('utf8')
、SET NAMES utf8
或其他特定于客户的方法来完成。(你在用什么客户?)
数据丢失。从表中删除数据。(表定义是可以的)所以,清理代码并重新开始。
有关Python的更多详细信息,请参见my blog。