You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用Python字典高效批量更新PostgreSQL指定字段的值?

批量更新PostgreSQL表的高效实现方案

背景与需求

我有一个Python字典,存储id到合约日期的映射:

id_to_contract_date = {1: 20242222, 2:20240303, 3:20240404, 102834: 20240505, ...}

我的PostgreSQL表sval结构如下,每个id对应3个不同的fid:

id       fid             ts                  val
    1       900     2021-09-20 00:00:00.000   Futures
    1       4055    2021-09-20 00:00:00.000   202406
    1       4057    2021-09-20 00:00:00.000   202406
    3       900     2021-09-20 00:00:00.000   Stock
    3       4055    2021-09-20 00:00:00.000   202302
    3       4057    2021-09-20 00:00:00.000   202302
   ...

需要将每个id对应的fid=4055和fid=4057的val值替换为字典中的对应值,期望输出如下:

id       fid             ts                  val
    1       900     2021-09-20 00:00:00.000   Futures
    1       4055    2021-09-20 00:00:00.000   20242222
    1       4057    2021-09-20 00:00:00.000   20242222
    3       900     2021-09-20 00:00:00.000   Stock
    3       4055    2021-09-20 00:00:00.000   20240404
    3       4057    2021-09-20 00:00:00.000   20240404
   ...

现有低效实现

我写了一段Python代码实现该功能,但它会循环每个contract_id执行一次更新,效率很低:

for contract_id in id_to_contract_date_map:
    contract_ids_contract_date = id_to_contract_date_map[contract_id]
    
    sql = SQL(format_triple_quoted_string("""
                update sval set val = {contract_ids_contract_date} where fid in (4055, 4057) 
                and id = {contract_id};
                """)).format(contract_id=Literal(contract_id),
                             contract_ids_contract_date=Literal(contract_ids_contract_date))

    session.execute(sql_to_string(session, sql))

请问有没有更高效的实现方式?


内容的提问来源于stack exchange,提问作者user21641220

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:36:16