1

I have tried to reproduce the example form SQLAlchemy doc:
http://docs.sqlalchemy.org/en/latest/orm/collections.html#passive-deletes
and failed.

My code:

class Parent(Base):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)
    children = relationship("Child", cascade="all, delete-orphan", passive_deletes=True)


class Child(Base):
    __tablename__ = 'child'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey('parent.id', ondelete='CASCADE'))    

p = Parent()
p.children = [Child(), Child()]
db_session.add(p)
db_session.commit()

parent = db_session.query(Parent).first()
db_session.delete(parent)
db_session.commit()

The error:
sqlalchemy.exc.IntegrityError: (psycopg2.IntegrityError) update or delete on table "parent" violates foreign key constraint "child_parent_id_fkey" on table "child" DETAIL: Key (id)=(26) is still referenced from table "child". [SQL: 'DELETE FROM parent WHERE parent.id = %(id)s'] [parameters: {'id': 26}]

What am I doing wrong?

Andriy
  • 1,270
  • 3
  • 17
  • 35

0 Answers0