【问题标题】:Is it possible to decode strings automatically using SqlAlchemy?是否可以使用 SqlAlchemy 自动解码字符串?
【发布时间】:2013-08-23 11:07:09
【问题描述】:

使用 SqlAlchemy,我有一些字符串列失败了

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 356: ordinal not in range(128)

因为它们不是 Unicode。

我知道通过执行 my_string.decode('cp1252'),它可以工作,但是是否可以定义一个方法来自动解码从数据库返回的所有字符串。

有了它,调用my_model.my_string,将在返回和解码之前进行处理。

我查看了http://docs.sqlalchemy.org/en/rel_0_8/core/types.html#coercing-encoded-strings-to-unicode,这似乎正是我正在寻找的,但我不知道在哪里告诉 SqlAlchemy 使用CoerceUTF8 类。

【问题讨论】:

  • 为什么烧瓶很重要?为什么不使用您正在使用的 DBMS?
  • 为什么不让 DB-API 适配器根据连接字符集解码字符串?
  • 您已经找到了解决方案。你在那里建造的是一种新的类型。因此,您可以使用Column(CoercedString...),而不是Column(String...)Column(Unicode...)
  • 我忘了提到我试图在数据库的连接字符串中指定 UTF-8 字符集,但没有成功。原来,问题是我的数据库编码不是 uft8。 @Javex,将其发布为答案,我会接受。谢谢你们的cmets :)

标签: python unicode sqlalchemy


【解决方案1】:

您已经找到了解决方案。你在那里建造的是一种新的类型。因此,您可以使用Column(CoercedString...),而不是Column(String...)Column(Unicode...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2015-10-01
    • 1970-01-01
    • 2013-09-19
    • 2023-02-03
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多