博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python MySQLdb 使用utf-8 编码插入中文数据
阅读量:6824 次
发布时间:2019-06-26

本文共 1966 字,大约阅读时间需要 6 分钟。

参考地址:http://blog.csdn.net/dkman803/article/details/1925326/

本人在使用python,mysqldb操作数据库的时候,发现如下问题,编码如下:

conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="ym_shop",charset="utf8")  cursor = conn.cursor()cursor.execute("SET NAMES utf8");single_color = '黑色'sql_select_color = "select * from `ym_spec_value` where sp_value_name = '%s' and store_id= '%d' and sp_id = %d and gc_id = %d" %(single_color,1,1,14)n = cursor.execute(sql_select_color)print conn.affected_rows() ##数据库明明有数据,显示的却一直是0

后来看到一下的一篇文章,才需要中文插入之前需要转码:

single_color = single_color.decode("gbk").encode("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,MySQLdbconn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8")    #需要设定一下charset为utf-8cursor=conn.cursor()    #生成连接的指针对象#进行字符串编码转换并进行插入a = "浦发银行"a = a.decode("gbk").encode("utf-8")    #编码转换为utf-8sql="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 nconn.commit() #提交操作结果#进行查询操作检查刚刚执行的插入操作结果n = cursor.execute("select * from stocklist")for row in cursor.fetchall():    print row[0] + row[1]cursor.close()    #关闭指针conn.close()    #关闭连接

 

转载于:https://www.cnblogs.com/zl0372/p/mysqldb_utf8.html

你可能感兴趣的文章
CentOS单用户与救援模式
查看>>
postfix 源码centos7上搭建及错误提示---亲测
查看>>
【Redis篇】Redis集群安装与初始
查看>>
jquery基础
查看>>
C# 集合已修改;可能无法执行枚举操作
查看>>
FSM Code Generator
查看>>
JDBC学习笔记——事务、存储过程以及批量处理
查看>>
JVM内存结构
查看>>
Java 锁
查看>>
7、索引在什么情况下遵循最左前缀的规则?
查看>>
c#中委托与事件
查看>>
mysql数据库备份之主从同步配置
查看>>
angularJs(1)指令篇
查看>>
自定义Xadmin
查看>>
jsp页面表单的遍历要怎么写
查看>>
循环引用,看我就对了
查看>>
软件工程——第一周作业
查看>>
ubuntu14.04安装vmware workstation
查看>>
ArcGIS API for Silverlight部署本地地图服务
查看>>
小知识点
查看>>