需求:使用 sqlalchemy
进行多条件查询时,当某个条件为空就忽略该条件.
知识点:
filter
使用or_
来进行或
的运算;func
可以进行 总量统计.
代码功能点:
- 如果
user_id
有值则取传来的值;如果没有传值,则查询user_id
不为空的所有数据; - 如果
state
有值则取传来的值;如果没有传值,则查询state
不为空的所有数据;
实现代码:
from operator import or_
from sqlalchemy import text, func
loan_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()
以上代码有个数据层面的问题,如果数据库中有 字段为空值的,那么是查不到的.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。