时间:2021-05-22
最近帮伙计做了一个从网页抓取股票信息并把相应信息存入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() #关闭连接总结
以上所述是小编给大家介绍的Python MySQLdb 使用utf-8 编码插入中文数据问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
获取带有中文参数的url内容对于中文的参数如果不进行编码的话,python的urllib2直接处理会报错,我们可以先将中文转换成utf-8编码,然后使用urll
asp+access数据库UTF-8乱码用asp,access数据库,网页编码是utf-8,就出现乱码,所有从数据库里读的中文汉字都是乱码,怎么办?郑州网站建设
js的string变量存储字符串使用的是unicode编码,要保存时必须选择其他编码后进行传输,比如转成utf-8,utf-32等。存储到数据库中为utf-8编
1、做设计要注意英文外贸网站的编码由于中文网站制作的惯性问题,有些英文外贸网站的编码可能还是中文编码“gb2312”,而不是使用国际化编码“UTF-8”或“IS
最近在处理文本文件时,遇到编码格式和换行符的问题。基本上都是GBK和UTF-8编码的文本文件,但是python3中默认的都是按照utf-8来打开。用不正确的编码