解决python数据库查询出现中文乱码的方法:1、python文件设置编码为utf-8;2、MySQL数据库字符集改为“charset=utf8”;3、Python连接MySQL时加上参数"charset=’utf-8"。
执行pip install PyMySQL 完成pyMySQL安装
数据库部分
-- 建表语句
CREATE TABLE books ( name varchar(50) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
insert into books values('万物生光辉'); insert into books values('我亲爱的甜橙树'); insert into books values('教父'); insert into books values('故事'); insert into books values('树上的男爵'); insert into books values('罗马人的故事2'); insert into books values('秘岛(全三册)');
python代码
#!/usr/bin/env python import pymysql.cursors connection = pymysql.connect(user='用户名', passwd='密码', db='数据库名') cursor = connection.cursor() ex = cursor.execute("select name from books") books = cursor.fetchmany(ex) for book in books: print("%s" % book[0]) connection.close()
执行结果
解决乱码方法如下:
Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)
MySQL数据库charset=utf-8
Python连接MySQL时加上参数 charset=’utf8’
读取数据后写入文件前执行编码book[0].encode(‘utf-8’)
最后测试的时候发现只需在连接MySQL的时候加上charset=’utf8’即可,以utf-8编码格式读取数据,其他条件无需添加,也不会出现从mysql中读取的数据出现中文乱码的情况。
修改后python代码
#!/usr/bin/env python import pymysql.cursors # 在连接Mysql的时候添加charset='utf8'即可解决中文乱码问题 connection = pymysql.connect(user='用户名', passwd='密码', db='数据库名', charset='utf8') cursor = connection.cursor() ex = cursor.execute("select name from books") books = cursor.fetchmany(ex) for book in books: print("%s" % book[0]) connection.close()
修改后的执行结果
推荐课程:Python入门与进阶教学视频(极客学院)
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!