使用连词查询 SQL Alchemy
Querying in SQL Alchemy Using Conjuctions
我正在尝试获取一个字符串列表,并基于列表中所有字符串的一个或一个组合进行查询。我想知道下面是否可以做这样的事情。
def filters(self,filter_company = ["DPL"]):
print "TEST"
# Company Filter
company_conj = 1 ## Bitwise 1 with AND will not effect other AND bits
for c in filter_company:
company_conj = (company_conj) & (Exception.company == c) ## Create co
qrty_exceptions = session.query(Exception).filter(company_conj) ## Query by conjunction
所以基本上,我遍历列表中的每个项目并尝试通过连接来进行连词。关键是我不知道列表中会有多少项目......但我想在逻辑上按位将它们与在一起,以便它们都形成合取。我最终收到以下错误:
TypeError:& 的操作数类型不受支持:'int' 和 BinaryExpression
实际上,我的意思不是使用按位或符号...“|”但我想如果你能做到 AND 那么它也应该适用于 OR。
我想下面的例子应该对你有帮助:
from sqlalchemy import or_, and_
company_filters = ["Filter1", "Filter2"] # as many as you like
clauses = [(Exception.company == c) for c in company_filters]
q = session.query(Exception)
q = q.filter(and_(*clauses)) # or `or_(*clauses)`
我正在尝试获取一个字符串列表,并基于列表中所有字符串的一个或一个组合进行查询。我想知道下面是否可以做这样的事情。
def filters(self,filter_company = ["DPL"]):
print "TEST"
# Company Filter
company_conj = 1 ## Bitwise 1 with AND will not effect other AND bits
for c in filter_company:
company_conj = (company_conj) & (Exception.company == c) ## Create co
qrty_exceptions = session.query(Exception).filter(company_conj) ## Query by conjunction
所以基本上,我遍历列表中的每个项目并尝试通过连接来进行连词。关键是我不知道列表中会有多少项目......但我想在逻辑上按位将它们与在一起,以便它们都形成合取。我最终收到以下错误:
TypeError:& 的操作数类型不受支持:'int' 和 BinaryExpression
实际上,我的意思不是使用按位或符号...“|”但我想如果你能做到 AND 那么它也应该适用于 OR。
我想下面的例子应该对你有帮助:
from sqlalchemy import or_, and_
company_filters = ["Filter1", "Filter2"] # as many as you like
clauses = [(Exception.company == c) for c in company_filters]
q = session.query(Exception)
q = q.filter(and_(*clauses)) # or `or_(*clauses)`