Python SqlAlchemy查询“filter_by”中Unicode值的会话返回nu

2024-04-18 21:04:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个(mssql)db表,其中一个列keyphrasenvarchar类型。我已经将这个表的SqlAlchemy模型设置为该列的类型为String(convert_unicode=True)(我也尝试将其设置为Unicode类型,但这也没有帮助)。在

我正在调用一个返回关键字值的API。我想检查我的数据库中是否已经存在返回的keyphrase值。我打电话给:

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

这对所有的英文字符都有效。但是,当我在会话中查询包含欧洲字符的值时,比如ä,é,ô,ü,查询调用总是返回null。我可以手动检查数据库,看看数据库中肯定有一个值,但由于某些原因,我的SqlAlchemy查询没有返回该值。在

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


Tags: 模型数据库true类型convertdbstringsqlalchemy
1条回答
网友
1楼 · 发布于 2024-04-18 21:04:00

似乎我的字符串有时被检测为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

相关问题 更多 >