如何更改模型主键的值?

时间:2019-07-30 06:41:28

标签: python sqlite data-modeling peewee

我有一个使用自定义设置的非整数主键的peewee模型:

class User(BaseModel):
    email = CharField(primary_key=True)
    full_name = CharField()

    # other properties go here

现在,某些用户的保存错误,因此我必须更新其电子邮件地址。但是,运行简单的save无效:

>>> u = User.get(email='wrong@bad.is')
>>> u.email = 'correct@good.is'
>>> u.save()

这将返回0并且不执行任何操作。除了删除旧记录并创建新记录之外,还有什么方法可以更新主键值?

注意:由于数据导入错误,这是一次性操作。通常,电子邮件地址不会被更新,这就是为什么它们被用作主键的原因

1 个答案:

答案 0 :(得分:0)

意识到我可以使用update查询:

User.update(email='correct@good.is').where(User.email == 'wrong@bad.is').execute()

.execute()替换为.sql()以打印原始SQL命令,而不是实际执行更新。