我们有一种情况,在我们的代码中的某个时刻,我们看到某些对象是分离的,但我们自己并没有明确地分离这些对象。哪些 SQLAlchemy 方法/操作会导致对象分离?也许关闭会话或类似的东西?
注意:我已经阅读了 SQLAlchemy 文档,该文档确实涵盖了将对象重新附加到会话,但对于实际上可以隐式分离实例的内容相对较少。
我们有一种情况,在我们的代码中的某个时刻,我们看到某些对象是分离的,但我们自己并没有明确地分离这些对象。哪些 SQLAlchemy 方法/操作会导致对象分离?也许关闭会话或类似的东西?
注意:我已经阅读了 SQLAlchemy 文档,该文档确实涵盖了将对象重新附加到会话,但对于实际上可以隐式分离实例的内容相对较少。
session.close() 将分离所有对象。如前所述,回滚也将分离在回滚事务中插入的那些对象。
我想主要的是如果你要“回滚”一个会话。正如文档所说:
在事务生命周期内将它们添加到 Session 时最初处于挂起状态的对象将被删除,对应于它们的 INSERT 语句被回滚。它们的属性状态保持不变。