[英]dynamic query filter with SQLalchemy operators
我有一個列表: scope_list = ['prd1 rls1', ' prd1 rls1 rls3 rls2']
我想基於scope_list
創建一個過濾器,在SQL中如下所示:
(product=prd1 AND `release` in (rls1)) OR (product=prd1 AND release in (rls1 ,rls3, rls2))
知道scope_list
中值的scope_list
有所不同,並且我以前不知道。 這就是為什么我想從scope_list
動態管理過濾器。
在SQL Alchemy中,我想我應該這樣做:
session.query(my_table).filter(or_(and_(my_table.product==%s,mytable.release.in_(%s))) for element.split() in scope_list)
我才剛剛開始學習SQL Alchemy,我們將不勝感激。
無論or_
和and_
可以采取可變數目的位置參數,所以如果你建立一個列表,你可以把它作為與位置參數or_(*or_args)
# First I split each term in the scope list.
scope_list = [term.split() for term in scope_list]
# Then the query is built.
or_args = [and_(
my_table.product == scope[0],
my_table.release.in_(scope[1:])) for scope in scope_list]
results = session.query(my_table).filter(or_(*or_args)).all()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.