不区分大小写的数组查询Flask-SQLAlchemy

时间:2017-12-20 11:25:37

标签: python postgresql flask sqlalchemy flask-sqlalchemy

我在Postgres表中有一个包含用户电子邮件和alt电子邮件地址的文本数组列。

我正在使用Flask和SQLAlchemy,我想在数据库中查询用户输入的电子邮件包含在数组中的行。目前我正在使用.contains

Users.query.filter(Users.emails.contains({email})).first()

我遇到的问题是某些现有的电子邮件地址混合了大写和小写,但我似乎找不到降低数组或查询不区分大小写的方法。

我看过func.lower但是这不想和Arrays很好地玩,另一个选择是.ilike然而我似乎无法让它工作,我的表大约有10,000行和.ilike我认为不会最有效率吗?

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:-1)

我最终只使用原始SQL,这就是诀窍。

db.engine.execute("SELECT * FROM Users WHERE '%s' = ANY(lower(emails::text)::text[])" % email)