Hi I found the answer I was loking for in http://docs.sqlalchemy.org/en/rel_1_0/orm/cascades.html#delete
The other, more special case way is to set the passive_deletes <http://docs.sqlalchemy.org/en/rel_1_0/orm/relationship_api.html#sqlalchemy.orm.relationship.params.passive_deletes> flag to the string"all". This has the effect of entirely disabling SQLAlchemy’s behavior of setting the foreign key column to NULL, and a DELETE will be emitted for the parent row without any affect on the child row, even if the child row is present in memory. Regards G On Tuesday, May 26, 2015 at 5:18:27 PM UTC+2, g wrote: > > Hi all > > With SA 1.0.4 I can delete rows that i could not delete with SA 0.9.3 . > > MODEL. > > Base = declarative_base() > class Node(Base): > __tablename__ = 'node' > id = Column(Integer, primary_key=True) > parent_id = Column(Integer, ForeignKey('node.id')) > data = Column(String(50)) > children = relationship("Node", > backref=backref('parent', remote_side=[id], > ),lazy="dynamic" > ) > > e = create_engine('postgresql+psycopg2://*****/test') > Base.metadata.create_all(e) > session = Session(e) > > QUERY AND DATA ARE: > > query = session.query( > Node.id, > Node.parent_id, > Node.data) > results = query.all() > print results > > [(1, None, u'parent'), (2, 1, u'child')] > > > NOW I TRY TO DELETE THE PARENT: > > > parent = session.query(Node).get(1) > print parent > session.delete(parent) > session.commit() > results = query.all() > print results > > > RESULT with SA 0.9.3 > > sqlalchemy-0.9.3-py2.7.egg\sqlalchemy\engine\default.pyc in do_execute(self, > cursor, statement, parameters, context) 423 424 def > do_execute(self, cursor, statement, parameters, context=None):--> 425 > cursor.execute(statement, parameters) 426 427 def > do_execute_no_params(self, cursor, statement, context=None): > IntegrityError: (IntegrityError) update or delete on table "node" violates > foreign key constraint "node_parent_id_fkey" on table "node" > DETAIL: Key (id)=(1) is still referenced from table "node". > 'DELETE FROM node WHERE node.id = %(id)s' {'id': 1} > > > > RESULT with SA 1.0.4: > > ==================== > > <__main__.Node object at 0x056BC5B0> > [(2, None, u'child')] > > > The parent is deleted and node.parent_id is set to null. > > > What should I change in the relationship or model to have in SA 1.0.4 the > same behavior as in SA 0.9.3 ? > > > Regards > > G > > > > > > > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.