相关疑难解决方法(0)

使用SQLAlchemy和pymysql,如何设置连接以使用utf8mb4?

我发现(艰难的方式)MySQL的UTF8字符集只有3个字节.一些研究表明,我可以通过更改表来利用utf8mb4排序规则来解决这个问题,并获得UTF应该是完整的4个字节.

我已经这样做了.我的数据库,表格和列都已被ALTER编辑以利用此字符集.但是,如果我的数据的unicode代码点大于U + FFFF,我仍会收到此消息:

Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='"
Run Code Online (Sandbox Code Playgroud)

我发现我有以下设置:

> show variables like '%collation%';

collation_connection  utf8_general_ci
collation_database    utf8mb4_general_ci
collation_server      utf8mb4_general_ci
Run Code Online (Sandbox Code Playgroud)

collation_server是通过更改设置my.cnf.我的问题是,如何更改连接?我目前使用SQL Alchemy和pymysql连接到数据库,如下所示:

connect_string = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(DB_USER, DB_PASS, DB_HOST, DB_PORT, DATABASE)
engine = create_engine(connect_string, convert_unicode=True, echo=False)
session = sessionmaker()
session.configure(bind=engine)
Run Code Online (Sandbox Code Playgroud)

我能做些什么来改变从utf8_general_ciutf8mb4_general_ci通过SQL炼金术连接时?

python mysql sqlalchemy utf8mb4 pymysql

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

mysql ×1

pymysql ×1

python ×1

sqlalchemy ×1

utf8mb4 ×1