Python MySQLdb 使用utf-8 编码插入中文数据问题


Posted in Python onMarch 13, 2018

最近帮伙计做了一个从网页抓取股票信息并把相应信息存入MySQL中的程序。

使用环境:

Python 2.5 for Windows
MySQLdb 1.2.2 for Python 2.5
MySQL 4.1.22

在写程序中遇到了些怪的故障。

第一个问题:插入中文失败

 这个是由于字符编码问题引起的。MySQL安装时我已经设置为utf8编码,表也是使用utf8编码建立。程序中只要在开头写好#-*- coding: utf-8 -*-,并在设定连接字符串时候写清使用utf8就可以了conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8")。设置之后从MySQL中取出的以utf8编码保存的中文也不会发生乱码。

对中文字符串,如:a = "浦发银行",在进行插入操作前做一下编码转换a = a.decode("gbk").encode("utf-8")。然后进行插入操作就没有任何问题了。

第二个问题:能插入之后无法在MySQL中保存刚才插入的数据

经过检查数据可以被正确的插入,但是连接断开之后不保存在表中。经过检查发现原来是漏了conn.commit()。需要在语句执行之后提交操作。

源代码如下。

#-*- coding: utf-8 -*-
import sys,MySQLdb
conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8") #需要设定一下charset为utf-8
cursor=conn.cursor() #生成连接的指针对象
#进行字符串编码转换并进行插入
a = "浦发银行"
a = a.decode("gbk").encode("utf-8") #编码转换为utf-8
sql="insert into stocklist (stockno,stockname) values (%s,%s)" #生成sql语句
param=('600000',a) #生成sql语句的参数
n = cursor.execute(sql,param) #执行sql语句
#以上操作等价于n = cursor.execute("insert into stocklist (stockno,stockname) values ('430004','"+ "浦发银行".decode("gbk").encode("utf-8") + "')")
print n
conn.commit() #提交操作结果
#进行查询操作检查刚刚执行的插入操作结果
n = cursor.execute("select * from stocklist")
for row in cursor.fetchall():
 print row[0] + row[1]
cursor.close() #关闭指针
conn.close() #关闭连接

总结

以上所述是小编给大家介绍的Python MySQLdb 使用utf-8 编码插入中文数据问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python创建系统目录的方法
Mar 11 Python
简单理解Python中的装饰器
Jul 31 Python
python 遍历字符串(含汉字)实例详解
Apr 04 Python
Python实现打印螺旋矩阵功能的方法
Nov 21 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
3个用于数据科学的顶级Python库
Sep 29 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
Django中URL的参数传递的实现
Aug 04 Python
python super的使用方法及实例详解
Sep 25 Python
python isinstance函数用法详解
Feb 13 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
python实现简易通讯录修改版
Mar 13 #Python
python学生信息管理系统
Mar 13 #Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 #Python
python用户管理系统
Mar 13 #Python
Windows环境下python环境安装使用图文教程
Mar 13 #Python
Python Numpy 数组的初始化和基本操作
Mar 13 #Python
python 中的list和array的不同之处及转换问题
Mar 13 #Python
You might like
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
JavaScript的目的分析
2007/01/05 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
python求解水仙花数的方法
2015/05/11 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
委托公证书范本
2014/04/03 职场文书
销售队伍口号
2014/06/11 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
三八妇女节慰问信
2015/02/14 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
java中重写父类方法加不加@Override详解
2021/06/21 Java/Android
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android