python - How to dynamically create where clauses given a list of parameters? -
would possible dynamically add together filters peewee select statement given list? illustration instead of:
table.select().paginate(page,entry_per_page).where((table.base==base1) & (table.base==base2) & ...)
i pass in, list
, , filter content in list
:
list = [base1, base2, base3...] table.select().paginate(page,entry_per_page).where((table.base==contentfromlist))
you can utilize reduce
(functools.reduce
in python 3.x):
>>> import operator >>> reduce(operator.mul, [2, 3, 5]) 30 >>> 2 * 3 * 5 30
with generator expression:
base_list = [base1, base2, base3] table.select().paginate(page,entry_per_page).where( reduce(oeprator.and_, (table.base == b b in base_list)) )
instead of operator.and_
(operator.__and__
), if need express more complex expression, can utilize lambda
:
... reduce(lambda a, b: & b, (table.base == b b in base_list)) ...
python peewee
No comments:
Post a Comment