python - queries - sqlalchemy documentation
Sqlalchemy crea dinĂ¡micamente combinaciones (1)
Tengo varias tablas en t
, y quiero unirlas a todas de la siguiente manera:
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)
)
Pero el n varía en tiempo de ejecución. ¿Es posible generar esta consulta dinámicamente?
Puede usar un ciclo para calcular el resultado de las n
uniones:
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)
O bien, si la intención es simplemente iterar a través de todas las tablas en t
, entonces el ciclo podría simplificarse a
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)