首页 > 解决方案 > 在 Pandas 中为 API 发出批量请求

问题描述

我想在 API 上发出批量 PUT 请求以更新现有记录。PUT 请求的参数有两列。我会使用 pandas 从 CSV 文件中读取每个 id 作为产品 id,然后根据产品 id 发出 PUT 请求来更新记录,例如 id = 1,它的 cat_id =2 和 4,然后进行PUT 请求更新 id = 1 的记录,并添加以下 JSON。

{"categories": [{"cat_id": 2,{"cat_id":4}}]}}

CSV 文件示例

ID cat_id
1 2,4
2 3,5,7,9

以下代码是我到目前为止所做的,但我仍然无法更新记录,并返回错误代码400。我的代码只取一个cat_id,如何在同一个单元格中取多个id。

import pandas as pd
import requests
from requests.structures import CaseInsensitiveDict


def bulk_update(row):
    id = row['id']
    cat_id = row['cat_id']

    url = "https://localhost/product/"+str(id)
    headers = CaseInsensitiveDict()
    headers["Content-Type"] = "application/json"
    data = {
        "categories": [{"id": cat_id}]}

    resp = requests.put(url, headers=headers, data=data)
    print(resp.status_code)


data = pd.read_csv("test.csv")
data = data.apply(bulk_update, axis=1)

标签: pythonpandasapi

解决方案


推荐阅读