PostgreSQL ILIKE query with SQLAlchemy

30,726

Solution 1

I think it should work

Post.query.filter(Post.title.ilike('%some_phrase%'))

http://docs.sqlalchemy.org/en/latest/orm/internals.html?highlight=ilike#sqlalchemy.orm.attributes.QueryableAttribute.ilike

Solution 2

For python 3.6 instead of '%' + some_phrase + '%' you can write

Post.query.filter(Post.title.ilike(f'%{some_phrase}%'))
Share:
30,726
sundance
Author by

sundance

Updated on June 22, 2021

Comments

  • sundance
    sundance almost 3 years

    I'd like to run a query that selects all posts, case insensitive, that have titles that match '%' + [some_phrase] + '%'. That is, select all rows that have titles that contain some phrase, case insensitive. From the research I've done, it looks like I need to use Postgres's ILIKE query for it to match case insensitive. How can I execute a query like this with 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))