使用SQLAlchemy进行PostgreSQL ILIKE查询

时间:2013-12-03 23:28:19

标签: python postgresql sqlalchemy flask flask-sqlalchemy

我想运行一个查询,选择所有帖子,不区分大小写,标题与'%' + [some_phrase] + '%'匹配。也就是说,选择所有具有包含标题的行,不区分大小写。从我所做的研究来看,我看起来需要使用Postgres的ILIKE查询来匹配不区分大小写。如何使用SQLAlchemy执行这样的查询?

class Post(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    title = db.Column(db.String(250))
    content = db.Column(db.String(5000))

3 个答案:

答案 0 :(得分:33)

答案 1 :(得分:1)

对于python 3.6而不是'%' + some_phrase + '%',您可以编写

Post.query.filter(Post.title.ilike(f'%{some_phrase}%'))

答案 2 :(得分:0)

还有一个可行的解决方案:

from sqlalchemy.sql.operators import ilike_op
Post.query.filter(ilike_op(Post.title, f'%{some_phrase}%'))

这个解决方案帮助我克服了使用 Unresolved attribute reference 'ilike' for class 'property' 时出现的警告 hybrid_property