我想运行一个查询,选择所有帖子,不区分大小写,标题与'%' + [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))
答案 0 :(得分:33)
我认为应该有效
Post.query.filter(Post.title.ilike('%some_phrase%'))
答案 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