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

2次阅读

共计 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()

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

正文完
 0