需要:应用 sqlalchemy
进行多条件查问时,当某个条件为空就疏忽该条件.
知识点:
filter
应用or_
来进行或
的运算;func
能够进行 总量统计.
代码性能点:
- 如果
user_id
有值则取传来的值;如果没有传值,则查问user_id
不为空的所有数据; - 如果
state
有值则取传来的值;如果没有传值,则查问state
不为空的所有数据;
实现代码:
from operator import or_from sqlalchemy import text, funcloan_output = db.query(self.model).filter(or_(Loan.user_id == user_id, Loan.user_id != None), or_(Loan.state == state, Loan.state != None)).order_by().all()# 获取符合条件的总数据量count = db.query(func.count(Loan.id)).filter(or_(Loan.user_id == user_id, Loan.user_id != None), or_(Loan.state == state, Loan.state != None)).scalar()
以上代码有个数据层面的问题,如果数据库中有 字段为空值的,那么是查不到的.