首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyMysql编码问题

PyMysql编码问题
EN

Stack Overflow用户
提问于 2015-09-03 14:48:18
回答 2查看 2.5K关注 0票数 1

我有MySql数据库(MyISAM引擎、utf-8字符集和utf8_general_ci排序规则).此外,我还使用PyMysql驱动程序将Python3代码连接到该数据库。但是,当我试图用下面的代码获取一些行时

代码语言:javascript
复制
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_unicodecharset,但它们的组合都没有带来预期的结果。有了英语专栏,一切都好。那么如何获得编码良好的字符串呢?create表命令的输出

“'CREATE表my_table (id int(11) NOT NULL AUTO_INCREMENT,ruColumn varchar(155)默认NULL,主键(id)) ENGINE=MyISAM DEFAULT CHARSET=utf8”

EN

回答 2

Stack Overflow用户

发布于 2015-09-03 23:49:39

有多种可能发生的情况。

  • 您的客户端中的字节不是utf8 8编码的。
  • 连接到数据库时没有指定utf8。这是通过set_charset('utf8')SET NAMES utf8或其他特定于客户端的方法完成的。(你用的是什么客户?)

数据丢失了。从表中删除数据。(表定义是可以的。)所以,清理代码,重新开始。

有关Python的更多细节,请参见我的博客

票数 2
EN

Stack Overflow用户

发布于 2015-09-04 13:17:56

我通过将连接驱动程序从pymysql切换到mysql-连接器-python来解决这个问题,您可以通过pip安装它。

代码语言:javascript
复制
pip install mysql-connector-python --allow-external mysql-connector-python

因此,将代码更改为

代码语言:javascript
复制
import mysql
conn = mysql.connector.connect(host='localhost',
                               port=3306,
                               user='root',
                               passwd='',
                               db='db_name')

输出将是正确的,无需额外指定字符集或其他参数。似乎是PyMySQL驱动程序的内部编码问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32378913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档