簡體   English   中英

如何在過濾器查詢sqlalchemy中動態“_or”

[英]how to dynamic “_or” in filter query sqlalchemy

我是使用scrapesqlalchemy的初學者,我在這個過濾器查詢中發現了一個問題。

data = ['foo','bar']
q_cat = self.session.query(Category).filter_by(_or(name=='foo',name=='bar')).all()

我的代碼中的數據變量是動態的。 如何在_or(...)內部使其動態化?

謝謝。

您似乎希望搜索類別是否屬於任何數據元素。 在這種情況下,最好使用in_ 這是一個例子。

Category.query.filter(Category.name.in_(data))      

這將為您提供包含data存在的名稱的所有類別的列表。

如果你只是做所有等於操作,那么 _運算符中最好使用。

但是,如果你真的想在or_and_運營商明確,無論采取條款任意數量。

如果數據列表的長度不同,則可以創建將用於or_的邏輯子句的新列表,例如:

data = ['foo','bar']
data_comparisons = [Category.name == field for field in data]
q_cat = self.session.query(Category).filter_by(*data_comparisons).all()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM