Flask/SQLAlchemy - 如何全局使用latin-1而不是UTF-8?

Kyl*_*son 3 python mysql unicode sqlalchemy flask

我有一个使用Flask,SQLAlchemy和MySQL编写的Web应用程序.当我通过表单(例如request.form['Username'])提交字符串时,它们通过SQLAlchemy提交,最终作为Unicode字符串提交给MySQL.我的数据库正在使用latin-1字符集,所以我真的希望在整个过程中使用latin-1.有没有办法强制Flask或SQLAlchemy总是使用/转换为latin-1而无需手动操作string.encode('latin-1')

作为一个如何导致问题的例子,当我做一个SELECT...WHERE Name=:name并提供request.form['Name']作为绑定参数时,它会经历u'Some Name'并因此找不到任何匹配.

Mar*_*ers 6

您可以在连接参数中设置SQLAlchemy与MySQL连接的编码:

create_engine('mysql+mysqldb:///mydb?charset=latin1')
Run Code Online (Sandbox Code Playgroud)

请参阅有关MySQLSQLAlchemy文档,unicode部分.