背景:想用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)
運行代碼結果:
從中我們可以看到這個代碼確實實現有則更新,無則插入的操作,趕緊來試試看吧.