remove queries delete binds python sqlalchemy

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)