在使用pymysql库向数据库中写入中文时,有时候会出现中文乱码等问题,下面是一些解决方法以及相应的代码示例。
- 设置数据库编码
首先,在创建数据库连接时,需要在db参数中添加?charset=utf8,告诉数据库使用utf8编码。如:
import pymysql
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8')
- 设置表编码
其次,还需要使用如下命令来设置表的编码:
ALTER TABLE `表名` CONVERT TO CHARACTER SET utf8;
- 使用Python3的字符串
在Python3中,所有的字符串都是Unicode编码的,因此,可以直接将中文字符串插入到数据库中。如:
name = '张三'
age = 18
cursor = conn.cursor()
sql = "INSERT INTO student(name, age) values(%s, %s)"
cursor.execute(sql, (name, age))
conn.commit()
- 设置字符集
除了以上两种方法外,还可以使用如下命令在MySQL中设置字符集:
SET NAMES utf8;
- 示例一:使用Python3的字符串
import pymysql
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8')
name = '李四'
age = 20
cursor = conn.cursor()
sql = "INSERT INTO student(name, age) values(%s, %s)"
cursor.execute(sql, (name, age))
conn.commit()
conn.close()
- 示例二:修改表编码
import pymysql
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8')
cursor = conn.cursor()
# 修改表编码
cursor.execute("ALTER TABLE student CONVERT TO CHARACTER SET utf8")
name = '王五'
age = 22
sql = "INSERT INTO student(name, age) values(%s, %s)"
cursor.execute(sql, (name, age))
conn.commit()
conn.close()
以上就是使用pymysql写入中文的一些解决方法以及相应的示例代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用pymysql写入中文的问题 - Python技术站