前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 读取 mysql 中文乱码

python 读取 mysql 中文乱码

作者头像
有福
发布2018-08-28 14:44:17
5.1K0
发布2018-08-28 14:44:17
举报
文章被收录于专栏:极客生活极客生活

这两天看了很多关于mysql中文乱码的问题,除了创建table的时候设置为utf8编码以及修改mysql配置文件的方法外,很少有人提关于python库中中文乱码的处理办法,尤其是records库的中文乱码问题。

文中的代码在CentOS或者Ubuntu操作系统python3的环境下都测试没问题。

基于python3使用pymysql来读取mysql中的内容,在connect中一定要加入charset参数,否则中文在ubuntu或者centos下读出来显示一堆问号。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import pymysql
import config

if __name__ == '__main__':
    db = pymysql.connect(config.mysql_host, config.mysql_user, config.mysql_pass, config.mysql_db, charset='utf8')
    cursor = db.cursor()
    sql = "select name from user"
    cursor.execute(sql)
    for row in cursor.fetchall():
        print(row)
    db.close()

records库是requests作者 kennethreitz 写的一个非常方便的针对各种数据库进行数据处理的python库,只不过文档和网上的相关内容很少,尤其是中文的情况,如果不知道正确的使用方法很容易出现乱码。

代码语言:javascript
复制
mysql4read = 'mysql://{user}:{passwd}@{host}:3306/{db}'.format(host=host, user=user, passwd=pass, db=db)
db = records.Database(mysql4read, connect_args={"charset": "utf8"})
sql = "select name from user"
for row in db.query(sql).as_dict():
    print(row)

可以看到一定要在创建db对象的时候传入connect_args参数,否则中文很容易出现乱码。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档