SQLALCHEMY: Das Löschen von untergeordneten Objekten aktualisiert das Elternteil nicht
Posted: 21 May 2025, 12:39
In Sqlalchemy 1.2.11 habe ich zwei Orm -Modelle wie SO definiert (vereinfacht): < /p>
scheint zu kleben, indem der nächste Satz von SQL-Operationen in einem anderen Transaktionsblock auftritt, wodurch der Nebeneffekt des faulen Ladens beim Aufrufen der übergeordneten übergeordneten. Entfernen Sie gelöschte Objekte von übergeordneten. Children , von denen sie weiß>
Code: Select all
from sqlalchemy.orm import (
Column,
Integer,
ForeignKey,
)
from sqlalchemy.orm import relationship
class Parent(Base):
__tablename__ = 'parent'
# columns
id = Column(Integer, primary_key=True)
# relationships
children = relationship('Child', back_populates='parent')
class Child(Base):
__tablename__ = 'child'
# columns
id = Column(Integer, primary_key=True)
parent_id = (Integer, ForeignKey('parent.id', ondelete='cascade'))
# relationships
parent = relationship('Parent', back_populates='children')
< /code>
Ich erstelle beide Objekte, füge zur Sitzung hinzu und spüle: < /p>
parent = Parent()
child = Child()
parent.children.append(child)
session.add(child)
session.flush()
< /code>
Schließlich lösche ich das untergeordnete Objekt: < /p>
session.delete(child)
session.flush()
< /code>
Alle relevanten SQL -Anweisungen werden gespült; Sowohl die ersten Einsätze als auch die nachfolgenden Löschen. Das untergeordnete Objekt ist jedoch weiterhin angehängt. Nur Session.commit ()