MySQL pyMySQL 设置连接字符集
阅读更多:MySQL 教程
什么是字符集
在 MySQL 中,字符集(Charset)是一种规定了字符的编码方式和存储方式的机制。字符集决定了在某种语言环境下所使用的字符个数和存储方式。在 MySQL 中,字符集是与数据库、表和列相关的。它可以是服务器级、数据库级、表级或列级的。
MySQL 支持多种字符集,包括 ASCII、UTF-8、GBK、Big5 等。其中,UTF-8 字符集被广泛应用于国际化领域,它可以支持世界上几乎所有的文字,是当前最流行的字符集之一。GB2312 是一种中文字符集,被广泛应用于中国大陆。
设置连接字符集
在使用 pyMySQL 模块连接 MySQL 数据库时,默认的字符集是 utf-8mb4。如果需要修改连接字符集,可以使用以下方法:
import pymysql
# 打开数据库连接
db = pymysql.connect(
host="localhost",
user="root",
password="123456",
database="test",
charset="utf8mb4",
port=3306
)
# 执行 SQL 查询
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
# 获取记录
data = cursor.fetchone()
print("Database version : %s " % data)
# 关闭数据库连接
db.close()
在打开数据库连接时,使用 charset 参数来指定字符集即可。如上例所示,将字符集修改为 utf8mb4。
除了在打开连接时设置字符集,还可以在 SQL 语句中指定字符集:
import pymysql
# 打开数据库连接
db = pymysql.connect(
host="localhost",
user="root",
password="123456",
database="test",
port=3306
)
# 执行 SQL 查询
cursor = db.cursor()
cursor.execute("SET NAMES utf8mb4")
# 执行插入语句
sql = "INSERT INTO test VALUES ('张三')"
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
# 关闭数据库连接
db.close()
在执行 SQL 之前,使用 “SET NAMES” 命令来指定字符集为 utf8mb4。
指定数据库字符集
在创建数据库时,可以指定该数据库的字符集。如果未指定,将使用服务器默认的字符集。可以通过以下语句在创建数据库时指定字符集:
import pymysql
# 打开数据库连接
db = pymysql.connect(
host="localhost",
user="root",
password="123456",
port=3306
)
# 创建游标对象
cursor = db.cursor()
# 创建数据库
cursor.execute("CREATE DATABASE IF NOT EXISTS testdb CHARACTER SET utf8mb4")
# 关闭数据库连接
db.close()
以上代码将创建名为 testdb 的数据库,并将字符集设置为 utf8mb4。
指定表字符集
在创建表时,可以指定该表的字符集。如果未指定,将使用该数据库的默认字符集。可以通过以下语句在创建表时指定字符集:
import pymysql
# 打开数据库连接
db = pymysql.connect(
host="localhost",
user="root",
password="123456",
database="testdb",
port=3306
)
# 创建游标对象
cursor = db.cursor()
# 创建表
sql = "CREATE TABLE IF NOT EXISTS testtable(name CHAR(20)) CHARACTER SET utf8mb4"
cursor.execute(sql)
# 关闭数据库连接
db.close()
以上代码将创建名为 testtable 的表,并将字符集设置为 utf8mb4。
总结
本文介绍了 MySQL pyMySQL 设置连接字符集的相关内容,包括字符集的概念、设置连接字符集的方法、指定数据库字符集和表字符集的方法。在进行 MySQL 操作时,正确设置字符集可以保证数据的完整性和正确性,特别是在跨语言、跨国际化方面更为重要。
极客笔记