关于python:sqlalchemy-使用-filter-多条件查询当某个条件为空时就忽略该条件

需要:应用 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()

以上代码有个数据层面的问题,如果数据库中有 字段为空值的,那么是查不到的.

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理