使用三个查询执行联合 - SQLAlchemy

时间:2015-11-13 12:52:38

标签: 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)

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

query3 = query3.filter(model.tenant_id == context.tenant_id)

所以我需要在所有三个查询中执行Union。

2 个答案:

答案 0 :(得分:3)

这就是我在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)

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

答案 1 :(得分:2)

解决方案如下:

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)