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

如何遍历pandas DataFrame将每行转JSON对象分批上传至远程数据库

解决方案

你可以直接对原始DataFrame按固定批次大小切片,不需要逐行遍历存入普通数组,就能一次性解决你遇到的两个问题,同时修正原有代码的逻辑错误。

核心修改点

  • 按批次大小直接切分DataFrame,每段切片本身是DataFrame类型,可直接调用to_json(orient='records')方法,解决数组无对应方法的问题
  • 用带步长的循环处理全量数据,自动覆盖不足一批的剩余数据,解决小数据量无法发送的问题
  • 修正原有状态码判断逻辑:200为请求成功状态,原逻辑写反
  • 优化URL参数拼接方式,用requests自带的params参数自动处理URL编码,避免特殊字符导致请求出错
  • 修复原代码遍历DataFrame时实际拿到的是列名而非行数据的隐藏问题

修改后代码

import pandas as pd
import requests

def UploadData(root, self, data: pd.DataFrame):
    batch_size = 10  # 每批次发送10条,可根据实际需求调整大小
    total_rows = len(data)
    # 逐批遍历全量数据
    for start_idx in range(0, total_rows, batch_size):
        # 切分当前批次的DataFrame,超出索引范围时自动截止到最后一行
        current_batch = data.iloc[start_idx: start_idx + batch_size]
        # 直接调用DataFrame的to_json方法
        json_str = current_batch.to_json(orient='records')
        # 构造请求参数
        req_params = {
            "tok": '{"tok":"YOUR TOKEN HERE","cmd":{"STORE":"test_database","VALUE":' + json_str + '}}'
        }
        url = 'https://newsimland.com/~db/JSON/'
        # 发送请求,自动处理参数编码
        resp = requests.get(url, params=req_params)
        # 单批次错误提示,可按需调整为终止发送或跳过继续
        if resp.status_code != 200:
            Alert(title="错误", text=f"第{start_idx//batch_size + 1}批次数据上传失败")
    # 全量数据处理完成提示
    Alert(title="成功", text="所有数据上传完成")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:03