python中mysql中文的读写

1. 设置mysql中的charset是UTF-8的,然后在python代码文件中设置#coding=utf-8。

2. 使用MySQLdb连接数据库时,要加上charset='utf-8'的选项,不然它会以默认的编码去读取数据库的内容。

确保了1和2之后,就能正常地读取中文数据了,示例代码:

#encoding=utf-8
import sys
import MySQLdb

db=MySQLdb.connect(user='root',charset='utf8')
cur=db.cursor()
cur.execute('use mydb')
cur.execute('select name from mytable')

for row in cur.fetchall():
     print row["name"]

f.close()
cur.close()
这时输出的就是中文。

这时如果在打印时加上: print type(row["name"]),就会发现打印出来的是unicode。其实python内部都是用unicode来表示的。在这里,它把数据库中的内容从UTF-8转换到了unicode。而如果你要把中文内容写到数据库,还是需要转换成原来的UTF-8格式的,所以写的时候需要加上: row["name"].encode(“utf-8"),这表示从unicode转换成UTF-8。示例代码:

#encoding=utf-8
import sys
import MySQLdb

db=MySQLdb.connect(user='root',charset='utf8')
cur=db.cursor()
cur.execute('use mydb')
name = unicode('你好','utf-8') 
cur.execute('INSERT INTO mytable(name) VALUES(%s)',[name.encode('utf-8')])
f.close()
cur.close()

注意上面代码仅作演示,实际上,如果name类型为str类型,并且插入时不做encode,也能正常将中文插入数据库中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值