如果存在行,如何更新字段,否则插入行?

时间:2019-07-18 15:01:39

标签: peewee

假设我的数据库中包含以下数据:

k    c1    c2
0     1  null
1  null     1

说我运行了一个计算,该计算给出了对的列表(k,c1)。我想按如下方式将这些对放入我的数据库中:

  1. 如果我的表中存在k,请更新c1(将c2保留不变)
  2. 如果我的表中不存在k,请添加一个新行,并将c2设置为null(或该列的默认值)

是否有一种方法可以通过

table.insert_many(rows)

table.inser_many对我不起作用,因为即使c2曾经有一个值,它也会迫使c2为空。

1 个答案:

答案 0 :(得分:0)

取决于您的数据库,但是其中大多数(包括最新版本的sqlite)都支持某种形式的upsert /在冲突更新时插入。

http://docs.peewee-orm.com/en/latest/peewee/querying.html#upsert

请咨询您的数据库文档以获取有关特定实现的详细信息。