我想使用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
Run Code Online (Sandbox Code Playgroud)
然而,显然分离的对象仍然"记住"它具有的id,即使我在分离时将id设置为None.因此,session.flush()尝试执行UPDATE,将主键更改为null.
这是预期的行为吗?如何删除此属性的"内存",并在将重新添加到会话时将其作为新对象处理?一般来说,如何克隆SQLAlchemy模型实例?
现在我有一个数据库架构:
对于视频,它包含许多片段,对于片段,它包含许多作业,每个作业中它包含许多路径,依此类推......
现在我想复制片段并组合在一起制作一个新视频。我知道我可以编写一个脚本来从段循环到作业再到...到 bbox,并一一复制所有条目。但是是否有更好的解决方案可以让我以更智能的方式进行深层复制及其所有外部关系条目?