使用数据库连接 URI 查询字符串 charset 设置编码(mysql+pymysql://url?charset=utf8mb4)无法改变 MySQL 数据库的实际编码?

flask-sqlalchemy

#1

mysql版本:MySQL5.7
pip包
PyMySQL==0.9.3
Flask-SQLAlchemy==2.4.1
SQLAlchemy==1.3.16

settings.py # 配置文件
SQLALCHEMY_DATABASE_URI=f"mysql+pymysql://{MYSQL_USER}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset=utf8mb4"
用db.create_all()创建的数据表中CHARSET=latin1


#2

援引群聊:

yw94:我后来查了一下资料,用orm建表,并不能改变数据库的编码方式,它的charset参数只是设置客户端跟服务端之间交互的编码。数据库本身的编码方式是由配置文件管理的

Keeper:我知道mysql的编码格式是 /etc/my.cfg 里设置。

Posion:在my.cnf设置好,建库,建表,建字段都默认继承my.cnf

Posion:驱动只是设置client charset

Keeper:mysql默认安装,如果不配置 服务器编码和 client编码 就默认是latin

Posion:新版mysql已经改过来了,新版mysql就算不设置也是utf-8