Python插入MySQL数据库中文乱码通常是由于字符编码不一致导致的。MySQL数据库默认使用UTF-8编码,而Python中的字符串可能使用不同的编码格式(如GBK、GB2312等),因此在插入数据时可能会出现乱码。
在处理中文数据时,特别是在Web应用、数据分析、日志记录等场景中,确保字符编码的一致性非常重要。
确保MySQL数据库、表和列的字符集设置为UTF-8。
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE mytable (
id INT PRIMARY KEY,
name VARCHAR(255)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
在Python连接MySQL时,指定字符集为UTF-8。
import mysql.connector
config = {
'user': 'your_user',
'password': 'your_password',
'host': 'your_host',
'database': 'your_database',
'charset': 'utf8mb4'
}
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
# 插入数据
sql = "INSERT INTO mytable (name) VALUES (%s)"
value = ("中文",)
cursor.execute(sql, value)
conn.commit()
确保Python字符串本身是UTF-8编码。
# 确保字符串是UTF-8编码
name = "中文".encode('utf-8').decode('utf-8')
以下是一个完整的示例,展示了如何在Python中插入中文数据到MySQL数据库,并确保字符编码正确。
import mysql.connector
# 数据库连接配置
config = {
'user': 'your_user',
'password': 'your_password',
'host': 'your_host',
'database': 'your_database',
'charset': 'utf8mb4'
}
# 连接数据库
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
# 创建表(如果表不存在)
cursor.execute("""
CREATE TABLE IF NOT EXISTS mytable (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
""")
# 插入数据
sql = "INSERT INTO mytable (name) VALUES (%s)"
value = ("中文",)
cursor.execute(sql, value)
conn.commit()
# 关闭连接
cursor.close()
conn.close()
通过以上步骤,可以有效解决Python插入MySQL数据库时中文乱码的问题。
领取专属 10元无门槛券
手把手带您无忧上云