SQLAlchemy 一次在冲突时插入(更新插入)多行

San*_*Fot 5 python sqlalchemy upsert bulk

我知道SQLAlchemy中有一些命令称为bulk_insert_mappings和bulk_update_mappings,它们可以一次插入/更新多行;我知道有一种方法可以像这样更新插入一行:

from sqlalchemy.dialects.postgresql import insert
insert_stmt = insert(my_table).values(
     id='some_existing_id',
     data='inserted value'
     )
do_update_stmt = insert_stmt.on_conflict_do_update(
        index_elements=['id'],
        set_=dict(data='updated value')
     )
conn.execute(do_update_stmt)
Run Code Online (Sandbox Code Playgroud)

我想做的是将这两件事合并到批量更新插入中,而不必 ping 我的数据库三次(一次查看需要插入哪些行和更新哪些行,一次进行实际插入,一次进行更新) 。有谁知道是否有办法做到这一点?感谢您提前提供任何帮助!