如果行存在,如何更新字段,否则插入行?
How do I update a field, if row exists, otherwise insert row?
假设我的数据库中有以下数据:
k c1 c2
0 1 null
1 null 1
假设我 运行 计算给出了对 (k, c1) 的列表。我想按如下方式将这些对推送到我的数据库中:
- 如果我的 table 中存在 k,请更新 c1(保持 c2 不变)
- 如果我的 table 中不存在 k,请添加一个新行,并将 c2 设置为空(或该列的默认值)
有没有办法在一次操作中做到这一点,类似于
table.insert_many(rows)
?
table.inser_many 对我不起作用,因为即使 c2 曾经有一个值,它也会强制 c2 为 null。
取决于您的数据库,但它们中的大多数(包括最新版本的 sqlite)在冲突更新时支持某种风格的更新插入/插入。
http://docs.peewee-orm.com/en/latest/peewee/querying.html#upsert
有关具体实施的详细信息,请参阅您的数据库文档。
假设我的数据库中有以下数据:
k c1 c2
0 1 null
1 null 1
假设我 运行 计算给出了对 (k, c1) 的列表。我想按如下方式将这些对推送到我的数据库中:
- 如果我的 table 中存在 k,请更新 c1(保持 c2 不变)
- 如果我的 table 中不存在 k,请添加一个新行,并将 c2 设置为空(或该列的默认值)
有没有办法在一次操作中做到这一点,类似于
table.insert_many(rows)
?
table.inser_many 对我不起作用,因为即使 c2 曾经有一个值,它也会强制 c2 为 null。
取决于您的数据库,但它们中的大多数(包括最新版本的 sqlite)在冲突更新时支持某种风格的更新插入/插入。
http://docs.peewee-orm.com/en/latest/peewee/querying.html#upsert
有关具体实施的详细信息,请参阅您的数据库文档。