SQLAlchemy 1.4 – ¿Cómo realizar consultas en relaciones de muchos a muchos?
Soy nuevo en SQLAlchemy y sus documentos son un poco confusos, pero tengo una relación bidireccional de muchos a muchos definida de la siguiente manera:
class Parent(Base):
__tablename__ = 'parents'
id = Column(Integer, autoincrement=True, primary_key=True)
children = relationship('Child', secondary=association_table,
back_populates='parents')
class Child(Base):
__tablename__ = 'children'
id = Column(Integer, autoincrement=True, primary_key=True)
parents = relationship(
'Parent', secondary=association_table, back_populates='children')
association_table = Table('parent_child_association', Base.metadata,
Column('parent_id', ForeignKey(
'parents.id'), primary_key=True),
Column('child_id', ForeignKey(
'children.id'), primary_key=True)
)
No puedo encontrar la forma de consultar los Padres donde se obtengan todos los hijos por cada padre en el array Parent.children
.
Se agradecería cualquier ayuda, ya que no tengo mucha experiencia con SQLAlchemy.
davy.ai
Para consultar Padres donde se obtienen todos los hijos por padre bajo el array Parent.children, puedes utilizar la función
subquery()
en combinación conjoin()
y la propiedadrelationship
de la claseParent
.Aquí tienes un ejemplo de consulta:
Esta consulta devolverá todos los objetos
Parent
con sus objetosChild
asociados cargados en el arrayParent.children
.Luego puedes recorrer los resultados y acceder al array
Parent.children
de la siguiente manera:Espero que esto ayude. Hazme saber si tienes alguna otra pregunta.