在有初始化连接的数据库上使用SQLAlchemy的UTF-8
我正在尝试使用sqlalchemy连接到mysql数据库。我设置了 charset=utf-8$use_unicode=0
。这个设置在几乎所有数据库上都能正常工作,但在某个特定的数据库上却不行。我认为这是因为它的'init-connect'变量被设置为 'SET NAMES latin2;'
,而我没有权限去更改这个设置。
如果我手动发送查询 SET NAMES utf8
,那就能正常工作。但是如果出现临时断开连接的情况,重新连接后,我的程序又会出问题,因为从服务器获取的数据是latin2编码的。
有没有办法创建一个钩子,让sqlalchemy在连接时总是发送 SET NAMES
呢?或者有没有其他方法可以解决这个问题?
1 个回答
1
听起来你想要的是一个自定义的池监听器。这个StackOverflow的回答解释了如何在SQLite的PRAGMA foreign_keys=ON
的情况下编写一个。