我有一个使用自定义设置的非整数主键的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
并且不执行任何操作。除了删除旧记录并创建新记录之外,还有什么方法可以更新主键值?
注意:由于数据导入错误,这是一次性操作。通常,电子邮件地址不会被更新,这就是为什么它们被用作主键的原因
答案 0 :(得分:0)
意识到我可以使用update
查询:
User.update(email='correct@good.is').where(User.email == 'wrong@bad.is').execute()
将.execute()
替换为.sql()
以打印原始SQL命令,而不是实际执行更新。