python处理多条件组合查询的逻辑处理方法

最近一段时间经常要写一些联合查询的逻辑,同时要满足逻辑a,b,c或是其中一种,写起来很是麻烦.
有一天突然想到一个简单方法,将每一个子句先放置于list中,然后将list中的子句用" and "拼接起来,最外层判断list是否为空,不为空在最前面加上"where "的条件头即可.

例子:

有一个请求任务,其中有2个请求字段:
status_code:为空字符串,表示请求全部状态,为"8"表示全部成功,为"-4"表示在黑名单中
symbol:为空表示所有合约,或者表示具体的合约名

首先申明一个list为空
s_list = list()
然后判断如果symbol为真,则将其加入到list中
if symbol:
s_list.append(“symbol=’{}’”.format(symbol))
再判断如果status_code为真,也将其加入到list中
if status_code:
s_list.append(“status_code={}”.format(status_code))
在外层判断list的状态,为真则where子句存在,否则where子句为空字符串
if s_list:
where_sub_sql = "where " + " and ".join(s_list)
else:
where_sub_sql = “”

完整代码片段如下:

s_list = list()
if symbol:
    s_list.append("symbol='{}'".format(symbol))
if status_code:
    s_list.append("status_code={}".format(status_code))
if s_list:
    where_sub_sql = "where " + " and ".join(s_list)
else:
    where_sub_sql = ""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的麦田

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值