取消会话中的对象

Man*_*aux 22 python sqlalchemy

是否可以从SQLAlchemy会话中取消绑定对象?

我习惯了deepcopy,但是因为在使用关联代理时这似乎不可能,我正在寻找另一种解决方案来从会话中删除对象以将其添加到另一个.

Mak*_*cha 29

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

session.expunge(obj1)
Run Code Online (Sandbox Code Playgroud)

更新:分离的对象可以通过使用附加到相同或另一个会话

session2.add(obj1)
Run Code Online (Sandbox Code Playgroud)

或合并

session2.merge(obj1)
Run Code Online (Sandbox Code Playgroud)

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

  • 我想要注意的是,如果对象没有配置cascade ="expunge",并且代码中有任何引用,那么该对象将不会被清除 (5认同)
  • 删除对象后是否可以立即将其分配给另一个会话? (2认同)