使用SQLAlchemy配置connection_collat​​ion

时间:2017-12-05 19:42:27

标签: python mysql sqlalchemy collation

我试图让SQLAlchemy连接到collation_connection utf8mb4_unicode_ci的MySQL。

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

1 个答案:

答案 0 :(得分:2)

这是一个特定于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',)]