合并许多表 SQLalchemy

Union many tables SQLalchemy

我有一个 table 名称的列表,在映射到 SQLalchemy ORM 对象的 Postgres 数据库中有许多 table(几十个)。它们都有公共列,我想将所有 table 中的一组子列合并到一个 CTE 或子查询中,以用于进一步的查询等。

我知道使用 table1.union(table2) 会联合 2 table。但是,我不想复制粘贴几十次相同的代码。

有没有一种优雅的方法可以做到这一点?

谢谢。

解法:

其实很简单Ian.

all_tables = []
for table in list_of_tables:
    this_table = select(.....)
    all_tables.append(this_table)

# union
unioned_tables = union(*all_tables)

我认为你可以像

一样继续链接那个联盟
a = table1.union(table2)
a = a.union(table3)

但也有一些函数将动态数量的表合并为位置参数:

union or union_all

q = union(table1, table2, table3)