考虑到我的用户可以将数据另存为“café”或“cafe”,因此我需要能够使用不区分重音的查询来搜索该字段。

我找到了https://github.com/djcoin/django-unaccent/,但是我不知道是否有可能在sqlalchemy上实现类似的功能。

我使用的是PostgreSQL,所以如果解决方案特定于该数据库,则对我来说很不错。如果是通用解决方案,那就更好了。

谢谢你的帮助。

最佳答案

首先在PostgreSQL中安装unaccess扩展:create extension unaccent;
接下来,在Python中声明SQL函数unaccent:

from sqlalchemy.sql.functions import ReturnTypeFromArgs

class unaccent(ReturnTypeFromArgs):
    pass

并像这样使用它:
for place in session.query(Place).filter(unaccent(Place.name) == "cafe").all():
    print place.name

如果表很大,请确保索引正确,否则将导致全表扫描。

关于python - SQLALCHEMY忽略查询的重音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18433719/

10-09 08:35