在有初始化连接的数据库上使用SQLAlchemy的UTF-8

4 投票
1 回答
1311 浏览
提问于 2025-04-16 03:34

我正在尝试使用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的情况下编写一个。

Sqlite / SQLAlchemy:如何强制执行外键?

撰写回答