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

作者:dkman803 时间:2023-07-31 11:04:13 

最近帮伙计做了一个从网页抓取股票信息并把相应信息存入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 编码插入中文数据问题网站的支持!

来源:http://blog.csdn.net/dkman803/article/details/1925326/

标签:python,utf8,编码
0
投稿

猜你喜欢

  • 使用python打印十行杨辉三角过程详解

    2021-04-16 18:47:24
  • mysql tmp_table_size和max_heap_table_size大小配置

    2024-01-18 11:40:52
  • python绘制规则网络图形实例

    2021-08-31 02:28:28
  • 浅谈Python2获取中文文件名的编码问题

    2021-08-11 08:18:45
  • Go语言空结构体详解

    2024-04-30 10:07:44
  • asp 性能测试报告 学习asp朋友需要了解的东西

    2011-03-09 10:57:00
  • Python中装饰器高级用法详解

    2023-09-30 09:46:42
  • asp如何在线查询本地机的文件?

    2010-06-22 21:19:00
  • python一行代码合并了162个Word文件

    2022-07-24 04:20:57
  • 很无聊的一个找碴游戏

    2008-07-02 13:10:00
  • Python读取csv文件实例解析

    2023-01-21 07:47:32
  • python3基于OpenCV实现证件照背景替换

    2022-06-08 02:16:53
  • python_tkinter弹出对话框创建2

    2023-10-17 06:27:29
  • Go语言学习之Switch语句的使用

    2024-04-23 09:38:57
  • AJAX使用get与post模式的区别分析

    2024-04-29 13:58:39
  • 想用户所想(感受亚马逊的设计)

    2007-08-26 17:09:00
  • PHP无限分类代码,支持数组格式化、直接输出菜单两种方式

    2024-05-13 09:24:51
  • Go语言通过smtp发送邮件的方法

    2024-01-29 19:21:27
  • 详解django中自定义标签和过滤器

    2021-02-16 19:43:38
  • Django drf分页器的使用详解

    2022-04-09 08:23:35
  • asp之家 网络编程 m.aspxhome.com