在查找您的异常发生的源之后,我建议尝试以下操作:
sl = DBSession.query(Puesto.id).filter(Puesto.locales_id == id).subquery()DBSession.query(Servicio).filter(Servicio.puestos_id.in_(sl)) .delete(synchronize_session='fetch')
请参阅delete方法的文档以了解其含义。传递
fetch参数将基本上运行查询两次,一次为选择,一次为删除。
如果运行两个查询是不希望的,通过
synchronize_session=False代替,然后调用
session.expire_all()立即删除后,以避免不一致的状态的内部
metaData存储。



