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,也能正常将中文插入数据库中

Logo

更多推荐