考虑到我的用户可以将数据另存为“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/