取消会话中的对象

时间:2012-06-26 18:24:34

标签: python sqlalchemy

是否可以从SQLAlchemy会话解除绑定对象?

我曾经deepcopy,但是当使用关联代理时这是seems not to be possible我正在寻找另一个解决方案来从会话中删除对象以将其添加到另一个。

1 个答案:

答案 0 :(得分:28)

Expunge从Session中删除一个对象,将持久化实例发送到分离状态,将暂挂实例发送到瞬态:

session.expunge(obj1)

更新:可以使用

将分离的对象附加到同一会话或另一个会话
session2.add(obj1)

或合并

session2.merge(obj1)

使用merge()时,给定的实例不会放在会话中,并且可以与不同的会话关联或分离。 merge()对于获取任何类型的对象结构的状态非常有用,而不考虑其起源或当前会话关联并将该状态置于会话中。