批量更新插入,但只更新非空字段

时间:2021-02-20 00:22:55

标签: postgresql sqlalchemy

我正在尝试遵循此处另一篇文章中的批量更新插入示例:

update_stmt = insert_stmt.on_conflict_do_update(
    index_elements=[MyTable.id],
    set_={'test_value': insert_stmt.excluded.test_value}
)

我的列是 {'email': 'someemail', 'firstname': 'firstname', 'lastname': 'lastname'}

现在,上面的例子似乎会更新我给它的任何值,所以在我的例子中,我可以通过执行 set_={'firstname': insert_stmt.excluded.test_value} 来更新“名字”。

我不明白的是如何只更新插入语句实际提供的列?

说我插入 {'email': 'someemail', 'firstname': 'firstname', 'lastname': 'lastname'} 然后我尝试插入 {'email': 'someemail', 'firstname': 'newname'}

我希望它更新原始行,然后读取 {'email': 'someemail', 'firstname': 'newname', 'lastname': 'lastname'}

我怎样才能做到这一点?

0 个答案:

没有答案