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

Cloudflare Python SDK 4.1.0批量更新KV数据库报错求助

问题描述

尝试使用Cloudflare Python SDK批量更新KV数据库键值对时遇到错误,当前使用SDK版本为4.1.0,参考相关API文档编写的代码及运行错误如下:

代码示例

import os
import json
from cloudflare import Cloudflare

# 读取JSON文件并转为字符串
with open('config.json', 'r', encoding='utf-8') as file:
    data = json.load(file)  
json_str = json.dumps(data, ensure_ascii=False)  

client = Cloudflare(
    api_email=os.environ.get("CLOUDFLARE_EMAIL"),  
    api_key=os.environ.get("CLOUDFLARE_API_KEY"),  
)

response = client.kv.namespaces.keys.bulk_update(
    namespace_id=os.environ.get("KV_NAMESPACE_ID"),
    account_id=os.environ.get("CF_ACCOUNT_ID"),
    body=[{
        "key" : "sb",
        "values": json_str
        }],
)
print(response.successful_key_count)

运行报错信息

$python3 upload.py 

Traceback (most recent call last):
  File "/home/hall/sb-converter/upload.py", line 35, in <module>
    response = client.kv.namespaces.keys.bulk_update(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'KeysResource' object has no attribute 'bulk_update'

疑问

  1. 是否使用了错误的SDK版本?
  2. 该版本SDK中是否有其他更新键值对的方式?
  3. 如何修复该错误?

解决方案
  1. SDK版本问题
    Cloudflare Python SDK 4.1.0版本确实未封装bulk_update方法,该批量更新接口是在v4.12.0及之后的版本中才加入的,你当前使用的版本过旧,导致找不到对应方法。

  2. 4.1.0版本的替代更新方式
    在4.1.0版本中,只能通过单个键值更新接口client.kv.namespaces.keys.put循环处理每个键值对,示例代码如下:

# 待更新的键值对列表
key_value_list = [
    {"key": "sb", "value": json_str}
]

for pair in key_value_list:
    res = client.kv.namespaces.keys.put(
        namespace_id=os.environ.get("KV_NAMESPACE_ID"),
        account_id=os.environ.get("CF_ACCOUNT_ID"),
        key=pair["key"],
        body=pair["value"]
    )
    print(f"键 {pair['key']} 更新状态: {res}")
  1. 错误修复方案
    有两种可行方案:
  • 方案一:升级SDK到新版本
    执行以下命令升级至最新版本:
pip install --upgrade cloudflare

升级后,需修正原代码中的参数错误(将values改为value),正确的批量更新代码:

response = client.kv.namespaces.keys.bulk_update(
    namespace_id=os.environ.get("KV_NAMESPACE_ID"),
    account_id=os.environ.get("CF_ACCOUNT_ID"),
    body=[{
        "key": "sb",
        "value": json_str  # 此处应为value而非values
    }],
)
print(response.successful_key_count)
  • 方案二:保留旧版本,使用单键循环更新
    采用上述put方法循环处理每个键值对,虽然效率不及批量更新,但能完全兼容4.1.0版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:37:33