我试图让SQLAlchemy连接到collation_connection
utf8mb4_unicode_ci
的MySQL。
我的服务器和数据库都使用utf8mb4_unicode_ci
排序规则。如果没有任何配置更改,我的collation_connection
为utf8_general_ci
。如果我将连接字符串中的charset
参数设置为charset=utf8mb4
,则collation_connection
将设置为utf8mb4_general_ci
。我一直无法找到任何文档说明如何在使用SQLAlchemy时设置collation_connection
。
答案 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',)]