def main():
    session = orm.sessionmaker(bind=engine)
db = session()
Base.metadata.create_all(engine)
p1 = Obj()
db.add(p1)
db.flush()
p2 = Obj()
p2.deleted = True
p1.children.append(p2)
db.flush()
print(p1)
db.expire_all()
p3 = db.query(Obj).first()
print(p3)
db.rollback()
if __name__ == '__main__':
    main()
Исключить обратимо удаленные элементы в самореферентных отношениях SQLAlchemy