【问题标题】:How to change the value of my model's primary key?如何更改模型主键的值?
【发布时间】:2019-07-30 14:48:49
【问题描述】:

我有一个使用自定义设置的非整数主键的 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 并且不执行任何操作。除了删除旧记录并创建新记录之外,有什么方法可以更新主键值?

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

【问题讨论】:

    标签: python sqlite data-modeling peewee


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 2016-02-20
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多