在python中更新azure cosmosdb中文档/行的值

问题描述 投票:0回答:1

大家晚上好

我正在编写小项目,想要添加到 Azure 存储(静态)访问计数器中托管的网站。 我想用 python 编写简短的脚本,当在 Azure Functions 中调用时,它会将记录的值更新为 +=1 我创建文档的方式:

## Create a container entry for amount of visits
try:
    item = {
        'id': 'visits',
        'value': 0,
        'description': 'amount of visits'

    }
    container.create_item(body=item)
    print('Successfully added to DB')
except exceptions.CosmosHttpResponseError:
    print('Cant do it')

现在在面板中看起来像这样: Azure CosmosDB Data Explorer

我想将每次调用函数时现在访问值修改为一。 这两天试图解决这个问题,但我不明白。 我在这方面绝对是初学者,一生中从未做过类似的事情,因此,如果我能寻求建议或指出我去哪里寻找,那就太棒了。

跑步时:

item = container.read_item('visits', partition_key='/value')
item += 1
updated_item = container.upsert_item(item)

*我得到: 回溯(最近一次调用最后一次): 文件“c:\Users\DellWS\Desktop\The Cloud Resume Challenge\The-Cloud-Resume-Challenge unction_app.py”,第 69 行,位于 item = container.read_item('访问',partition_key='/value') 。 。 。 azure.cosmos.exceptions.CosmosResourceNotFoundError:(NotFound) 系统中不存在具有指定 ID 的实体。更多信息:https://aka.ms/cosmosdb-tsg-not-found, RequestStartTime:2024-02-27T19:21:44.4403736Z,RequestEndTime:2024-02-27T19:21:44.4554468Z,尝试的区域数量:1 *

尝试了不同的方式:

## Increment visit value
item_id = 'visits'
item = container.read_item(item=item_id, partition_key='/value')
print(item)

if item:
    ## increment a value by one
    item['value'] += 1
    container.replace_item(item=item, body=item)
    print('Successfully incremented')
else:
    print('Item not found, or couldnt update')

并且也收到上述错误代码。

python azure azure-cosmosdb
1个回答
0
投票

我认为您遇到的问题是您使用 /value 作为主键,您还需要查找您要使用的项目。我会尝试以下方法:

  1. 创建一个新容器,其中主键类似于 /config_type。
  2. 使用对您有意义的任何 ID 和 /visit_count 的主键值在该容器中创建一个新项目。该项目还应该具有与访客数量相对应的属性。
  3. 用您的代码尝试一下,根据需要进行修改,看看会达到什么效果。

不要犹豫,在评论中跟进,我最近一直在使用 Cosmos DB 在 Python 中做一些工作,所以如果需要的话,我不介意提供更大程度的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.