使用 SQLAlchemy 配置 connection_collat​​ion

Pat*_*nam 4 python mysql sqlalchemy collation

我正在尝试让 SQLAlchemy 使用collation_connectionof来连接到 MySQL utf8mb4_unicode_ci

我的服务器和数据库都使用utf8mb4_unicode_ci排序规则。没有任何配置更改,我的collation_connection就是utf8_general_ci. charset如果我将连接字符串中的参数设置为charset=utf8mb4is collation_connection,则设置为utf8mb4_general_ci。我一直无法找到任何说明使用 SQLAlchemy 时如何设置的文档collation_connection

new*_*ver 6

这是 mysql 特有的变量,您所能做的就是在每个连接初始化时运行一条语句:

In [18]: url = 'mysql+pymysql://test:test@localhost/test'

In [19]: connect_args = {'init_command':"SET @@collation_connection='utf8mb4_unicode_ci'"}

In [20]: with sqlalchemy.create_engine(url, connect_args=connect_args).connect() as con:
    ...:     print(con.execute('select @@collation_connection;').fetchall())
    ...:
[('utf8mb4_unicode_ci',)]
Run Code Online (Sandbox Code Playgroud)