我想使用 orm 在 SQLAlchemy 中复制模型实例(行)。我的第一个想法是这样做:
i = session.query(Model)
session.expunge(i)
old_id = i.id
i.id = None
session.add(i)
session.flush()
print i.id #New ID
然而,显然分离的对象仍然“记住”它所拥有的 id,即使我在分离时将 id 设置为 None。因此, session.flush() 尝试执行 UPDATE 将主键更改为 null。
这是预期的行为吗?如何删除此属性的“内存”,并在将分离的对象重新添加到会话时将其视为新对象?一般来说,如何克隆 SQLAlchemy 模型实例?