用三个查询执行联合-SQLAlchemy

Mur*_*ali 3 python mysql sqlalchemy

在我的项目设置中,正在基于SQLAlchemy进行查询。

根据我之前的要求,我用两个查询完成了并集。

现在,我需要对三个查询进行联合。

代码如下:

query1 = query1.filter(model.name == "in-addr.arpa.")
query2 = query2.filter(model.tenant_id.in_(tenant_ids))
query = query1.union(query2)
Run Code Online (Sandbox Code Playgroud)

现在在这里,我需要再添加一个查询,如下所示:

query3 = query3.filter(model.tenant_id == context.tenant_id)
Run Code Online (Sandbox Code Playgroud)

因此,我需要对所有三个查询执行联合。

Mur*_*ali 5

解决方案如下:

query1 = query1.filter(model.name == "in-addr.arpa.")
query2 = query2.filter(model.tenant_id.in_(tenant_ids))
query3 = query3.filter(model.tenant_id == context.tenant_id)
query = query1.union(query2,query3)
Run Code Online (Sandbox Code Playgroud)


Ben*_*Ben 5

这就是我在 SQLAlchemy 1.3 中这样做的方式

from sqlalchemy import union

query1 = query1.filter(model.name == "in-addr.arpa.")
query2 = query2.filter(model.tenant_id.in_(tenant_ids))
query3 = query3.filter(model.tenant_id == context.tenant_id)

all_queries = [query1, query2, query3]
golden_set = union(*all_queries)
Run Code Online (Sandbox Code Playgroud)

此处的更改是 union 方法接受 SQLAlchemy 可选列表。

  • 我正在使用 - from sqlalchemy.sql import union。上述解决方案对我来说失败并出现错误 - TypeError: 'CompoundSelect' object is not iterable (2认同)