共计 548 个字符,预计需要花费 2 分钟才能阅读完成。
需要: 应用 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()
以上代码有个数据层面的问题, 如果数据库中有 字段为空值的, 那么是查不到的.
正文完