SQLAlchemy mysql 无法获得正确的字符集

SQLAlchemy mysql cannot get the correct charset

Python 3.8.8 程序与 Flask 2.0.1 和 Flask-SQLAlchemy 2.5.1

MySql 数据库,表的整理:utf8_general_ci。 我正在使用另外两个带有 SQLALCHEMY_BINDS 的 sqlserver 数据库。一切都在 Windows 10.

上运行

MySql 数据库 select 查询中的某些字符出错:“situazione è decisamente migliorata” 应该是:“situazione è decisamente migliorata”

这将解决问题:

mystring.encode('cp1252').decode('utf8')

但我需要程序级别的解决方案。我试过了:

没有尝试成功。请我需要建议。

您是否正在寻找一种方法来指定每个数据库连接编码?

对于所有连接尝试使用

app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'encoding': 'cp1252'}

对于与不同数据库的特定连接,您还可以使用 engine_options:

engine = create_engine('mysql://user:password@hostname/dbname',
                            encoding='cp1252')

得到解决方案。

问题不是问题。 建立原始数据库的人(那是相当古老的)编码错误的一些字符。 我的一些方法和 olegsv 建议的方法都有效,我检查了深入到 sqlalchemy 数据结构的调试,驱动程序接受了字符编码,但数据中的字符本身是错误的。 这是没有考虑到的。 也许我应该删除整个问题。