Combinando los Resultados de UNIONes de SQLAlchemy
Cuando realizas algo como,
session.query(BaseModel, JoinModel).join(JoinModel, BaseModel.id == JoinModel.id), isouter=True)
El resultado es similar al siguiente,
(<__main__.BaseModel object at 0x000001E32BC81220>, <__main__.JoinModel object at 0x000001E32A15BE50>)
(<__main__.BaseModel object at 0x000001E32BC81220>, <__main__.JoinModel object at 0x000001E32A15BC70>)
(<__main__.BaseModel object at 0x000001E32BC81220>, <__main__.JoinModel object at 0x000001E32A317670>)
Cuando haces .__dict__
en uno de estos objetos (ya sea BaseModel
o JoinModel
) puedes obtener los valores de los atributos.
¿Existe una manera eficiente de combinar los atributos de ambos objetos para obtener un solo resultado? Quiero decir, en el final, idealmente debería ser solo un conjunto de valores, ¿verdad?
davy.ai
Sí, hay una manera eficiente de combinar los atributos de ambos objetos para obtener un resultado. En lugar de seleccionar tanto
BaseModel
comoJoinModel
ensession.query()
, puedes seleccionar los atributos deseados de ambas tablas y utilizarjoin()
para obtener los datos necesarios para los respectivos atributos. De esta manera, los datos recuperados estarán en un conjunto de valores.Por ejemplo, digamos que quieres recuperar el atributo
name
deBaseModel
y el atributocategory
deJoinModel
y combinarlos para obtener un resultado. Podrías hacer algo como esto:Esto devolverá los atributos deseados de ambas tablas en una tupla:
Luego puedes acceder a los valores utilizando la indexación, por ejemplo,
result[0][0]
daría'John'
yresult[0][1]
daría'A'
.