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新手入门最容易犯的错误总结
Apr 24 Python
Python判断以什么结尾以什么开头的实例
Oct 27 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
python实现矩阵和array数组之间的转换
Nov 29 Python
Python flask框架端口失效解决方案
Jun 04 Python
Python3爬虫中Ajax的用法
Jul 10 Python
Python 数据分析之逐块读取文本的实现
Dec 14 Python
python 通过exifread读取照片信息
Dec 24 Python
python自动化发送邮件实例讲解
Jan 04 Python
Pytorch之扩充tensor的操作
Mar 04 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
桌面中心(二)数据库写入
2006/10/09 PHP
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
Python break语句详解
2014/03/11 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
建筑实习自我鉴定
2013/10/18 职场文书
金融行业务员的自我评价
2013/12/13 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
欢迎词怎么写
2015/01/23 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技