考虑到我的用户可以将数据保存为“café”或“cafe”,我需要能够使用不区分重音的查询来搜索该字段。
我发现了https://github.com/djcoin/django-unaccent/ https://github.com/djcoin/django-unaccent/,但我不知道是否可以在 sqlalchemy 上实现类似的东西。
我正在使用 PostgreSQL,因此如果解决方案特定于该数据库对我来说是有好处的。如果它是通用解决方案,那就好得多。
感谢您的帮助。
首先安装unaccent https://www.postgresql.org/docs/current/unaccent.htmlPostgreSQL 中的扩展create extension unaccent;
接下来,声明 SQL 函数unaccent
在Python中:
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
如果您有一个大表,请确保您有正确的索引,否则这将导致全表扫描。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)