python中mysql中文的读写
1. 设置mysql中的charset是UTF-8的,然后在python代码文件中设置#coding=utf-8。2. 使用MySQLdb连接数据库时,要加上charset='utf-8'的选项,不然它会以默认的编码去读取数据库的内容。确保了1和2之后,就能正常地读取中文
·
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,也能正常将中文插入数据库中
更多推荐
已为社区贡献2条内容
所有评论(0)