【发布时间】:2012-08-03 16:06:18
【问题描述】:
我有一个使用 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' 的形式通过,因此找不到任何匹配项。
【问题讨论】:
-
一条评论绝对不是一个有用的答案:我坚信你正朝着错误的方向前进。您应该努力使用 UTF-8 troughout,而不是相反。正如我所见,我看不出有任何理由坚持使用 Latin-1,尤其是因为您正在那里处理用户输入。 Latin-1 是不够的。我的波兰朋友一定会同意的。
-
我相信这通常是正确的,但是这是一个仅供几个人内部使用的系统,不需要任何特殊字符。
-
而 640K 对于每个人来说应该足够了。对不起,无法抗拒。系统有致命的进化趋势,我最近遇到了太多的编码问题。
-
我一定会牢记您的 cmets 并考虑。 :)
标签: python mysql unicode sqlalchemy flask