sqlalchemy filter multiple columns sqlalchemy filter multiple columns python python

sqlalchemy filter multiple columns


There are number of ways to do it:

Using filter() (and operator)

query = meta.Session.query(User).filter(    User.firstname.like(search_var1),    User.lastname.like(search_var2)    )

Using filter_by() (and operator)

query = meta.Session.query(User).filter_by(    firstname.like(search_var1),    lastname.like(search_var2)    )

Chaining filter() or filter_by() (and operator)

query = meta.Session.query(User).\    filter_by(firstname.like(search_var1)).\    filter_by(lastname.like(search_var2))

Using or_(), and_(), and not()

from sqlalchemy import and_, or_, not_query = meta.Session.query(User).filter(    and_(        User.firstname.like(search_var1),        User.lastname.like(search_var2)    ))


You can simply call filter multiple times:

query = meta.Session.query(User).filter(User.firstname.like(searchVar1)). \                                 filter(User.lastname.like(searchVar2))


You can use SQLAlchemy's or_ function to search in more than one column (the underscore is necessary to distinguish it from Python's own or).

Here's an example:

from sqlalchemy import or_query = meta.Session.query(User).filter(or_(User.firstname.like(searchVar),                                            User.lastname.like(searchVar)))