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

 更新时间:2018年03月13日 11:58:11   作者:dkman803  
这篇文章主要介绍了Python MySQLdb 使用utf-8 编码插入中文数据问题,需要的朋友可以参考下

最近帮伙计做了一个从网页抓取股票信息并把相应信息存入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读写zip压缩文件的方法

    Python读写zip压缩文件的方法

    Python自带模块zipfile可以完成zip压缩文件的读写,而且使用非常方便,下面我们就来演示一下Python读写zip文件的实例代码,需要的朋友参考下吧
    2018-08-08
  • 浅谈Pandas Series 和 Numpy array中的相同点

    浅谈Pandas Series 和 Numpy array中的相同点

    今天小编就为大家分享一篇浅谈Pandas Series 和 Numpy array中的相同点,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python实现银行账户资金交易管理系统

    Python实现银行账户资金交易管理系统

    这篇文章主要介绍了Python银行账户资金交易管理系统,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Keras设置以及获取权重的实现

    Keras设置以及获取权重的实现

    这篇文章主要介绍了Keras设置以及获取权重的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python内置函数compile(),complex()的使用

    python内置函数compile(),complex()的使用

    这篇文章主要为大家详细介绍了python内置函数compile(),complex()的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • python数据批量写入ScrolledText的优化方法

    python数据批量写入ScrolledText的优化方法

    今天小编就为大家分享一篇python数据批量写入ScrolledText的优化方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • pandas中DataFrame检测重复值的实现

    pandas中DataFrame检测重复值的实现

    本文主要介绍了pandas DataFrame检测重复值,主要包括了检查整行整列的检测,以及多列是否重复,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Python自动化办公之Excel拆分与自动发邮件

    Python自动化办公之Excel拆分与自动发邮件

    这篇文章主要何大家分享一个真实的自动化办公案例,即向用户发送带有Excel附件的电子邮件,同时必须按用户从主Excel文件中拆分数据以创建他们自己的特定文件,然后将该文件通过电子邮件发送给正确的用户,感兴趣的可以了解一下
    2022-03-03
  • python绘制趋势图的示例

    python绘制趋势图的示例

    这篇文章主要介绍了python如何绘制趋势图,帮助大家更好的用python绘制图像,进行数据可视化分析,感兴趣的朋友可以了解下
    2020-09-09
  • Pygame游戏开发之太空射击实战碰撞改进篇

    Pygame游戏开发之太空射击实战碰撞改进篇

    相信大多数8090后都玩过太空射击游戏,在过去游戏不多的年代太空射击自然属于经典好玩的一款了,今天我们来自己动手实现它,在编写学习中回顾过往展望未来,在本课中,我们将讨论如何更改 Pygame 处理精灵之间冲突的方式
    2022-08-08

最新评论