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

如何在Python中获取SQL循环插入后的最终记录总数

解决逐条插入时统计总插入行数的问题

方案1:用计数器累加成功插入数

初始化一个计数器变量,每次插入成功后累加数值,循环结束后输出总数,同时优化提交逻辑(频繁提交会拖慢性能):

# 初始化计数器
insert_count = 0

try:
    for row in data:
        LoadDt = row[0]
        FiscalWeek = row[1]
        InboundCaseVol = row[2]
        OutboundCaseVol6WCH = row[3]
        OutboundCaseVol6WWC = row[4]
        
        tgt_query = '''INSERT INTO"SAPTOM"."EL.ps.Tech::tbl.IBDbounrend_PY"("LoadDt","FiscalWeek","InboundCaseVol","OutboundCaseVol6WCH","OutboundCaseVol6WWC") VALUES (?,?,?,?,?) '''
        val = (LoadDt,FiscalWeek,InboundCaseVol,OutboundCaseVol6WCH,OutboundCaseVol6WWC)
        cur.execute(tgt_query, val)
        # 累加成功插入的行数
        insert_count += cur.rowcount
    # 循环结束后统一提交事务
    conn.commit()
    print(f'Number of Records inserted successfully: {insert_count}')
except Exception as e:
    print("Error inserting data:", e)
    # 出错时回滚事务,避免数据不一致
    conn.rollback()

方案2:改用批量插入(推荐,性能更优)

把所有待插入的参数整理成列表,用executemany()一次性插入,此时cur.rowcount直接返回总插入行数,效率比逐条插入高很多:

try:
    # 整理所有插入参数
    insert_values = []
    for row in data:
        LoadDt = row[0]
        FiscalWeek = row[1]
        InboundCaseVol = row[2]
        OutboundCaseVol6WCH = row[3]
        OutboundCaseVol6WWC = row[4]
        insert_values.append((LoadDt,FiscalWeek,InboundCaseVol,OutboundCaseVol6WCH,OutboundCaseVol6WWC))
    
    tgt_query = '''INSERT INTO"SAPTOM"."EL.ps.Tech::tbl.IBDbounrend_PY"("LoadDt","FiscalWeek","InboundCaseVol","OutboundCaseVol6WCH","OutboundCaseVol6WWC") VALUES (?,?,?,?,?) '''
    # 执行批量插入
    cur.executemany(tgt_query, insert_values)
    conn.commit()
    print(f'Number of Records inserted successfully: {cur.rowcount}')
except Exception as e:
    print("Error inserting data:", e)
    conn.rollback()

额外优化提示

  • 原脚本中每次循环都执行conn.commit()会大幅降低插入效率,建议统一在循环结束后提交
  • 增加异常捕获后的回滚操作,避免部分数据提交后出错导致数据不一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:08:15