Sql Алхимия Двунаправленная модель «многие ко многим»: максимальная ошибка рекурсии - PullRequest
0 голосов
/ 23 мая 2019

У меня есть пример, похожий на один в документации.Двунаправленные отношения многие ко многим.

class Association(Base):
    __tablename__ = 'association'
    left_id = Column(Integer, ForeignKey('left.id'), primary_key=True)
    right_id = Column(Integer, ForeignKey('right.id'), primary_key=True)
    extra_data = Column(String(50))
    child = relationship("Child", back_populates="parents")
    parent = relationship("Parent", back_populates="children")

class Parent(Base):
    __tablename__ = 'left'
    id = Column(Integer, primary_key=True)
    children = relationship("Association", back_populates="parent")

class Child(Base):
    __tablename__ = 'right'
    id = Column(Integer, primary_key=True)
    parents = relationship("Association", back_populates="child")

Проблема в том, что при создании родителя с количеством детей и попытке обновить родителя (с детьми) session.merge(updated_parent_with children) вызывает ошибку достижения максимальной рекурсии.

Это имеет смысл для меня, так как родитель имеет круговую зависимость от ребенка.Разве нет способа указать глубину сравнения при использовании session.merge ()

В документации или где-либо еще я не нашел примера того, как выполнить обновление для многих таким образом.Помощь

...