复制对象实例并使用peewee插入到DB创建重复的ID

时间:2017-02-24 23:06:12

标签: python mysql peewee

我有一个我想复制的对象(有很多属性)的实例。 我使用deepcopy()复制它然后修改几个属性。

然后我使用Python / PeeWee save()将我的新对象保存到数据库中,但save()实际上更新了原始对象(我认为这是因为id是从原始对象复制的。)

(顺便说一下,对象模型中没有定义主键)

如何强制保存新对象?我能改变它的身份吗?

感谢。

2 个答案:

答案 0 :(得分:0)

事实证明我可以将id设置为None(obj.id = None),这将在执行save()时创建一条新记录。

答案 1 :(得分:0)

如果您使用sqlite,则将id设置为None(obj.id = None),否则使用:

data = obj.__dict__['_data']
data.pop('id')
obj.insert(data).execute()