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

使用Python更新/替换CosmosDB文档时遇请求URL无效错误求助

Azure CosmosDB 文档替换更新报错解决方案

问题说明

使用Python SDK更新CosmosDB文档时,调用container.replace_item(doc['_self'], doc)报错CosmosHttpResponseError: (BadRequest) Request url is invalid,原因是当前SDK版本中,replace_item方法的第一个参数需传入文档的主键值,而非_self字段的链接。

解决方案

直接传入文档的主键(即容器分区键对应的值,此处为文档的id字段)作为第一个参数,替代_self链接。修改后的代码如下:

client = cosmos_client.CosmosClient('database_uri', 'database_key')
database = client.create_database_if_not_exists(id='database_id')

container = database.create_container_if_not_exists(
    id='container_id', 
    partition_key=PartitionKey(path="/id"), 
    offer_throughput=400
)

# 查询获取目标文档
q = 'SELECT * FROM c'
items = list(container.query_items(
    query=q,
    enable_cross_partition_query=True
))

doc = items[0]
# 修改字段值
doc['name'] = 'CER'
# 用文档的主键(id)替换_self链接
container.replace_item(doc['id'], doc)

补充说明

  • 容器分区键设置为/id时,文档的id既是主键也是分区键,直接传入即可;若分区键为其他字段,需同时指定对应分区键值(可通过doc['分区键字段名']获取)。
  • 新版本CosmosDB Python SDK推荐使用主键而非_self链接定位文档,可避免URL格式相关错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:45:29