Python Sqlalchemy动态创建连接

Python Sqlalchemy动态创建连接,python,sqlalchemy,Python,Sqlalchemy,我在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在运行时是不同的。是否可以动态生成此查询?您可以使用循环来计算

我在
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在运行时是不同的。是否可以动态生成此查询?

您可以使用循环来计算
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)