背景:想用peewee实现 mysql数据库 有则更新,无则插入.几番查找,发现在官方文档中有.下图:

在本地的数据库测试了,以下是测试语句及结果:
表结构
class Practice(Model):
id = AutoField(primary_key=True)
name = CharField(max_length=45)
sex = CharField(max_length=255)
class Meta:
database = database

测试代码
def upsert_func():
rowid = (Practice
.insert(name='AKA', sex='male', id=1)
.on_conflict(
preserve=[Practice.sex, Practice.name])
.execute())
print(rowid)
运行代码后结果:

接着,我们想修改id=1的,把它名字改为 Hello.
def upsert_func():
rowid = (Practice
.insert(name='Hello', sex='male', id=1)
.on_conflict(
preserve=[Practice.sex, Practice.name])
.execute())
print(rowid)
运行代码结果:

从中我们可以看到这个代码确实实现有则更新,无则插入的操作,赶紧来试试看吧.