【问题标题】:SQLAlchemy double forward slash issue using MySQLdb使用 MySQLdb 的 SQLAlchemy 双正斜杠问题
【发布时间】:2017-08-14 09:50:47
【问题描述】:

我现在已经搜索了几个小时。我正在接收 Facebook 帖子,并希望在 python 中使用 SQLAlchemy 将它们解析为 mysql 数据库。 Facebook 帖子包括笑脸和一堆特殊字符。

SQLALCHEMY 数据库 URI 如下所示:
SQLALCHEMY_DATABASE_URI = "mysql+mysqldb://...?charset=utf8&use_unicode=0"

在提交到数据库之前,我还使用 utf8 进行编码:
string.encode("utf-8")

从这里的几个问题/答案测试我仍然遇到这个问题:

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1366, "不正确的字符串值:'\\xF0\\x9F\\x8C\\x9E\\xF0\\x9F...'

【问题讨论】:

  • 您使用的是 Python 2?如果没有,don't use use_unicode at all。如果您希望获得可能的性能提升,请让 SQLAlchemy 为您处理编码,或者换句话说,不要手动编码。你的问题缺少mcve,所以很难说它到底发生在哪里,但这看起来像是某种双重转义的结果。而不是字节,你有字节转义序列的字符串表示(例如由错误处理程序反斜杠替换产生)。
  • 感谢@IljaEverilä 的评论。是的,我正在使用 2.7 会将该信息添加到我的问题中,并尝试为 mcve 改进它。如果我不对字符串进行编码,我也会遇到带有双引号的解析错误。

标签: python mysql utf-8 sqlalchemy mysql-python


【解决方案1】:

您是否尝试过使用utf8mb4 而不是utf8

Here's the reference

【讨论】:

  • 是的,我有。它会导致同样的问题。
  • @JustusNiemzok - 但是您是否更改了?charset=utf8&use_unicode=0表/列CHARACTER SET? ? 需要utf8mb4
  • @JustusNiemzok - 你知道在你的情况下需要哪些建议吗?
  • 是的。我没有将mysql表/列字符集设置为utf8mb4。在我改变和?charset=utf8&use_unicode=0@RickJames
  • True,而不是0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多