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)))