SQLALCHEMY: Das Löschen von untergeordneten Objekten aktualisiert das Elternteil nichtPython

Python-Programme
Anonymous
 SQLALCHEMY: Das Löschen von untergeordneten Objekten aktualisiert das Elternteil nicht

Post by Anonymous »

In Sqlalchemy 1.2.11 habe ich zwei Orm -Modelle wie SO definiert (vereinfacht): < /p>

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 () 
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ß>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post