sqlalchemy过滤多个列
如何组合两列并应用滤镜? 例如,我想同时search“名字”和“姓氏”列。 如果只search一列,我就是这么做的:
query = meta.Session.query(User).filter(User.firstname.like(searchVar))
您可以使用SQLAlchemy的or_
函数在多个列中进行search(下划线有必要与Python自己区分)。
这是一个例子:
from sqlalchemy import or_ query = meta.Session.query(User).filter(or_(User.firstname.like(searchVar), User.lastname.like(searchVar)))
您可以简单地多次调用filter
器:
query = meta.Session.query(User).filter(User.firstname.like(searchVar1)). \ filter(User.lastname.like(searchVar2))
有很多方法可以做到这一点:
使用filter(和运营商)
query = meta.Session.query(User).filter( User.firstname.like(search_var1), User.lastname.like(search_var2) )
使用filter_by(和运算符)
query = meta.Session.query(User).filter_by( firstname.like(search_var1), lastname.like(search_var2) )
链接filter(和操作符)
query = meta.Session.query(User).\ filter_by(firstname.like(search_var1)).\ filter_by(lastname.like(search_var2))
使用or_()或者and_()而不是()
from sqlalchemy import and_, or_, not_ query = meta.Session.query(User).filter( and_( User.firstname.like(search_var1), User.lastname.like(search_var2) ) )