我注意到我的MySQL数据库在默认情况下没有设置为UTF-8。改为选择latin1_swedish_ci排序规则。在
所以我很自然地遇到了一个用户报告的错误,我的应用程序不支持特殊字符。我去确保我的应用程序正确地处理了UTF-8,编写了一个测试,很肯定它可以很好地使用内存中的SQLite,但不能用于生产MySQL我似乎从SQLAlchemy文档中得到的解决方案是对我的列传递一个排序规则:column = db.Column(db.String(500, collation='utf8_general_ci'))
不幸的是,这导致我基于SQLite的单元测试失败——utf8_general_ci不是SQLite支持的编码。它是MySQL特有的。在
SQLite似乎可以使用UTF-8而不指定排序规则。我可以用MySQL进行测试,但是内存中的SQLite数据库对于spot测试来说是一个更快、更直接的测试选项。我确实优先考虑测试的易用性,所以回到使用SQLite进行测试对我来说是一个很大的优先事项。在
我尝试过的其他事情
我也试着加入
^{pr2}$
到我的连接字符串。我还使用了db.Unicode,而不是db.String。似乎没什么区别。在
问题
通过SQLAlchemy是否有一种直接的和数据库无关的方法来指示一个列应该用UTF-8编码?在