考虑一个带有索引String
字段的声明性 SQLAlchemy 模型:
class User(Base): name = Column(String(100), index=True, nullable=False)
该name
字段区分大小写,这意味着应保留原始大小写,但应支持对索引进行有效的不区分大小写的查询。
实现这一目标并在 SQLAlchemy 中实施的最佳方法是什么?
lower()
如果需要,可以使用查询
session.query(User).filter_by(name=lower('SOME_name'))
但没关系,只要解决方案优雅且高效即可。
由于性能要求,使用ILIKE
和 Postgres 级别的查询lower()
是不可接受的,它们已经过测试并且在我的用例中在大表上的执行速度不够快。
相关分类