如何用CSV/Excel文件作为输入批量调用POST接口更新产品数据
实现CSV/Excel批量调用单条更新API的方案
完全可以通过CSV或Excel文件作为输入,循环遍历每行数据调用API实现批量更新。核心思路是读取文件中的每一行记录,将其映射到API要求的请求格式中,逐一发送POST请求。
修改后的完整代码
import pandas as pd import requests import json import time # 用于控制请求间隔,避免触发API速率限制 # Authentication part of the code(保留你的认证逻辑) # 假设这里已经正确获取到包含access_token的data变量 url = "https://api-gateway.com/api" headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + data['access_token'], } # 读取文件:CSV用read_csv,Excel用read_excel # 替换为你的文件路径 df = pd.read_csv("products_update.csv") # df = pd.read_excel("products_update.xlsx") # 遍历每行数据,发送API请求 for index, row in df.iterrows(): # 构造符合API要求的payload payload = json.dumps({ "supplierReference": "XX23", "products": [{ "Distributor": row["Distributor"], "Description": row["Description"], "Price": str(row["Price"]), # 确保价格是字符串类型,根据API要求调整 "Brand": row["Brand"] }] }) try: response = requests.post(url, headers=headers, data=payload, verify=True) response.raise_for_status() # 抛出HTTP错误异常 response_data = json.loads(response.text) print(f"第{index+1}条数据更新成功:{response_data}") # 如果API有速率限制,添加延时 time.sleep(1) except requests.exceptions.RequestException as e: print(f"第{index+1}条数据更新失败:{str(e)}")
关键注意事项
- 文件格式匹配:确保CSV/Excel文件的列名与API要求的字段完全一致(
Distributor、Description、Price、Brand),否则会出现字段映射错误。 - 数据类型适配:根据API文档确认字段类型,比如示例中
Price转为字符串,若API要求数值类型则直接使用row["Price"]。 - 异常处理:加入
try-except块可以避免某一行数据出错导致整个批量任务中断,同时方便记录错误信息。 - 速率限制:多数API会有请求频率限制,通过
time.sleep()添加适当间隔,避免被封禁。 - 结果记录:可以将每次请求的响应结果写入日志文件,后续便于核对更新状态。
内容的提问来源于stack exchange,提问作者CED
相关产品推荐
相关产品推荐

