flask多条件查询的简单方式

想实现多个条件查询,但是又有空的情况,可以用*filter_list的方式来可选添加

# 这里按照优先级大小来进行判定
filter_list = []
# 如果什么条件都没有
if any([start_date, end_date, app_order_id, trade_no, is_handled, order_status]):
    # 如果查询有时间
    if start_date and end_date:
        start_date = datetime.strptime(start_date, "%Y-%m-%d")
        end_date += " 23:59:59"
        end_date = datetime.strptime(end_date, "%Y-%m-%d %H:%M:%S")
        filter_list.append(or_(and_(db.cast(CcbDanbian.pay_date, db.DATE) <= db.cast(end_date, db.DATE),
                                    db.cast(CcbDanbian.pay_date, db.DATE) >= db.cast(start_date, db.DATE)),
                               and_(db.cast(CcbDanbian.refund_date, db.DATE) <= db.cast(end_date, db.DATE),
                                    db.cast(CcbDanbian.refund_date, db.DATE) >= db.cast(start_date, db.DATE))
                               ))
    if app_order_id:
        filter_list.append(CcbDanbian.app_order == app_order_id)
    if trade_no:
        filter_list.append(CcbDanbian.bk_order == trade_no)
    if is_handled:
        filter_list.append(CcbDanbian.is_handle == is_handled)
    if order_status:
        filter_list.append(CcbDanbian.order_status == order_status)
ccb_danbian_exist_order = db.session.query(CcbDanbian).filter(
    *filter_list).order_by(
    CcbDanbian.id.asc()).all()

if not ccb_danbian_exist_order:
    db.session.close()
    return R.fail("查询失败,没有找到日期内的银行账单!")
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值