Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在给定参数列表的情况下动态创建where子句?_Python_Peewee - Fatal编程技术网

Python 如何在给定参数列表的情况下动态创建where子句?

Python 如何在给定参数列表的情况下动态创建where子句?,python,peewee,Python,Peewee,在给定列表的情况下,是否可以向Peewee select语句动态添加过滤器?例如,而不是: Table.select().paginate(page,ENTRY_PER_PAGE).where((Table.Base==Base1) & (Table.Base==Base2) & ...) 我想传入一个列表,它将根据该列表中的内容进行过滤: list = [Base1, Base2, Base3...] Table.select().paginate(page,ENTRY_PE

在给定列表的情况下,是否可以向Peewee select语句动态添加过滤器?例如,而不是:

Table.select().paginate(page,ENTRY_PER_PAGE).where((Table.Base==Base1) & (Table.Base==Base2) & ...)
我想传入一个
列表
,它将根据该
列表中的内容进行过滤:

list = [Base1, Base2, Base3...]
Table.select().paginate(page,ENTRY_PER_PAGE).where((Table.Base==contentfromList))
您可以使用(在Python 3.x中):

使用生成器表达式:

base_list = [Base1, Base2, Base3]
Table.select().paginate(page,ENTRY_PER_PAGE).where(
    reduce(oeprator.and_, (Table.Base == b for b in base_list))
)
如果需要表达更复杂的表达式,您也可以使用以下命令,而不是
运算符和
运算符和
):


啊,太好了!但问题是,运算符中的“”到底是做什么的?如果你的意思是
(…for..in…
),那就是a.@dumby.Fat.Cat,Python中没有
&
|
操作符,但是
。哦,还有最后一个问题@falstru,最后一个例子,你有a,b,a来自哪里?@dumby.Fat.Cat,
lambda
表达式是一种返回函数的表达式。请按照答案中的链接进行操作。(链接到
reduce
lambda
base_list = [Base1, Base2, Base3]
Table.select().paginate(page,ENTRY_PER_PAGE).where(
    reduce(oeprator.and_, (Table.Base == b for b in base_list))
)
...
reduce(lambda a, b: a & b, (Table.Base == b for b in base_list))
...