1

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

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

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

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

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

4

1 回答 1

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
于 2013-06-13T16:40:20.600 回答