gpt4 book ai didi

python - SQLAlchemy:分离对象的修改

转载 作者:IT老高 更新时间:2023-10-28 20:45:24 25 4
gpt4 key购买 nike

我想使用 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。

这是预期的行为吗?如何删除此属性的“内存”,并在将分离的对象重新添加到 session 时将其视为新对象?一般来说,如何克隆 SQLAlchemy 模型实例?

最佳答案

此案例可使用 make_transient()辅助函数:

inst = session.query(Model).first()
session.expunge(inst)

make_transient(inst)
inst.id = None
session.add(inst)
session.flush()
print inst.id #New ID

关于python - SQLAlchemy:分离对象的修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com