我在t
中有多个表格,我希望以下列方式加入所有表格:
sa.select(['*'])
.select_from(
t[0]
.join(t[1], (t[1].c.id == t[0].c.id), full=True)
.join(t[2], (t[2].c.id == t[0].c.id), full=True)
...
.join(t[n], (t[n].c.id == t[0].c.id), full=True)
)
但是n在运行时会有所不同。是否可以动态生成此查询?
答案 0 :(得分:2)
您可以使用循环来计算n
联接的结果:
t_joined = t[0]
for i in range(1, n+1):
t_joined = t_joined.join(t[i], t[i].c.id == t[0].c.id, full=True)
result = sa.select(['*']).select_from(t_joined)
或者,如果意图是简单地遍历t
中的所有表,那么循环可以简化为
t_joined = t[0]
for ti in t[1:]:
t_joined = t_joined.join(ti, ti.c.id == t[0].c.id, full=True)
result = sa.select(['*']).select_from(t_joined)