【问题标题】:Python SqlAlchemy querying Session with Unicode value in 'filter_by' returns nullPython SqlAlchemy 在“filter_by”中使用 Unicode 值查询会话返回 null
【发布时间】:2013-06-08 14:20:58
【问题描述】:

我有一个 (MS SQL) 数据库表,其中一列 keyphrase 的类型为 nvarchar。我已将此表的 SqlAlchemy 模型设置为该列的类型为 String(convert_unicode=True)(我也尝试将其设为 Unicode 类型,但这也无济于事)。

我正在调用一个返回关键字值的 API。我想检查返回的keyphrase 值是否已存在于我的数据库中。我通过调用来做到这一点:

Session.query(Keyword).filter_by(keyphrase=api_keyword_value).first()

这适用于所有英文字符。但是,当我在会话中查询包含欧洲字符(例如 ä、é、ô、ü)的值时,查询调用始终返回 null。我可以手动检查数据库,看看数据库中肯定有一个值,但由于某种原因,我的 SqlAlchemy 查询没有返回它。

我假设,因为它只在搜索包含欧洲字符的条目时发生,这是一个字符编码问题。但是没有抛出异常,所以我不确定这是哪里出了问题或如何解决它!有什么想法吗?

【问题讨论】:

    标签: python sql-server unicode sqlalchemy


    【解决方案1】:

    似乎我的字符串有时被检测为 unicode,有时不是?真的不知道那位是如何工作的......我做了一个小函数来检查我是否总是插入/搜索 unicode 值,它工作得很好。

    def make_me_unicode(s):
        if isinstance(s, str):
            return s.decode('utf-8')
        elif isinstance(s, unicode):
            return s
        else:
            return None
    

    【讨论】:

      猜你喜欢
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 2020-10-14
      • 2021-02-24
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      相关资源
      最近更新 更多