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')
但我需要程序级别的解决方案。我试过了:
- 附加到 SQLALCHEMY_DATABASE_URI 连接字符串:
"?charset=utf8" 或 "?charset=cp1215" 和其他
- 设置 app.config['MYSQL_CHARSET'] 和
app.config['MYSQL_DATABASE_CHARSET'] 到 'utf8'、'utf8mb4'、'latin1'、'cp1252'
...
- 将参数传递给 SQLAlchemy,例如 db = SQLAlchemy(use_native_unicode="utf8"),这里也有很多变化
没有尝试成功。请我需要建议。
您是否正在寻找一种方法来指定每个数据库连接编码?
对于所有连接尝试使用
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'encoding': 'cp1252'}
对于与不同数据库的特定连接,您还可以使用 engine_options
:
engine = create_engine('mysql://user:password@hostname/dbname',
encoding='cp1252')
得到解决方案。
问题不是问题。
建立原始数据库的人(那是相当古老的)编码错误的一些字符。
我的一些方法和 olegsv 建议的方法都有效,我检查了深入到 sqlalchemy 数据结构的调试,驱动程序接受了字符编码,但数据中的字符本身是错误的。
这是没有考虑到的。
也许我应该删除整个问题。
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')
但我需要程序级别的解决方案。我试过了:
- 附加到 SQLALCHEMY_DATABASE_URI 连接字符串: "?charset=utf8" 或 "?charset=cp1215" 和其他
- 设置 app.config['MYSQL_CHARSET'] 和 app.config['MYSQL_DATABASE_CHARSET'] 到 'utf8'、'utf8mb4'、'latin1'、'cp1252' ...
- 将参数传递给 SQLAlchemy,例如 db = SQLAlchemy(use_native_unicode="utf8"),这里也有很多变化
没有尝试成功。请我需要建议。
您是否正在寻找一种方法来指定每个数据库连接编码?
对于所有连接尝试使用
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'encoding': 'cp1252'}
对于与不同数据库的特定连接,您还可以使用 engine_options
:
engine = create_engine('mysql://user:password@hostname/dbname',
encoding='cp1252')
得到解决方案。
问题不是问题。 建立原始数据库的人(那是相当古老的)编码错误的一些字符。 我的一些方法和 olegsv 建议的方法都有效,我检查了深入到 sqlalchemy 数据结构的调试,驱动程序接受了字符编码,但数据中的字符本身是错误的。 这是没有考虑到的。 也许我应该删除整个问题。