我想构建一个像这样的动态查询: query =(field1 == val1)&((field2 == val2)|(field2 == val3)| ... |(field2 == valn)) val1到valn保存在list_value列表中。 我的代码类似于:
query = field1==val1
query1 = '' <--Problem
list_value=[val2, va3, ..., valn]
for val in list_value:
query1 |= field2==val
query = query&query1
但问题是查询构造不正确。这似乎是空query1声明的问题。 有没有什么干净的方法来编写这段代码?
谢谢!
答案 0 :(得分:0)
最简单的替代方法是使用.belongs
方法:
query = (field1 == val1) & field2.belongs(list_value)
如果你想坚持原来的方法,你可以这样做:
query1 = reduce(lambda a, b: a | b, (field2 == v for v in list_value))
答案 1 :(得分:0)
有点黑客攻击:
1.sw
2.esb
3.rotj
example 1
1vs2: winner = 2
2vs3: winner = 2
1vs3: winner = 1
Sorted List: 2,1,3
example 2
1vs3: winner = 1
1vs2: winner = 2
2vs3: winner = 2
Sorted List: 2,1,3
产生
q = False
q |= db.mytable.myfield != 'value'