import peewee
# 假设我们已经定义了一个Model类,并且数据库已经连接。
# 示例:使用ON CONFLICT REPLACE来处理主键冲突
class ExampleModel(peewee.Model):
# 假设有一个字段`id`作为主键
id = peewee.IntegerField(primary_key=True)
data = peewee.CharField()
class Meta:
database = db # 假设db是已经连接的数据库实例
# 创建一条记录,如果存在主键冲突,则替换旧记录
try:
with db.atomic(): # 开始一个原子操作
ExampleModel.insert(id=1, data='新数据').on_conflict(
action=peewee.REPLACE, # 指定冲突时的行为
preserve=[ExampleModel.data] # 指定在冲突时要保留的字段
).execute()
except peewee.IntegrityError as e:
print('处理冲突失败:', e)
else:
print('记录创建或替换成功。')
这段代码展示了如何在Peewee中使用ON CONFLICT REPLACE
来处理SQLite中的主键冲突问题。通过指定on_conflict
方法和参数,当尝试插入的记录因主键冲突时,旧记录将被新记录替换。这是一个简单的例子,实际应用中可能需要根据具体情况调整字段和逻辑。