如何使用python更新Cosmos Db中的记录?

时间:2020-03-12 11:07:41

标签: python azure azure-cosmosdb azure-cosmosdb-tables

我想从cosmos db中读取记录,并使用python更新cosmos db中的相同记录。

示例:

{
  "id":"id-1",
   "name":"mohit"
}

我想阅读上面的记录并将其更新为

{
  "id":"id-1",
   "name":"Mohit Singh"
}

我发现链接很少,但似乎只创建删除记录,而没有更新现有记录:

https://github.com/Azure/azure-cosmos-python#modify-container-properties

但无法获取如何更新现有记录的信息。

在我的情况下,我想从cosmos db中读取所有记录,并更新少量值。

我如何在python中做到这一点。

import os
import json
import azure.cosmos.cosmos_client as cosmos_client

    COSMOS_DB_END_POINT = os.getenv("COSMOS_DB_END_POINT")
    COSMOS_DB_MASTER_KEY = os.getenv("COSMOS_DB_MASTER_KEY")
    COSMOS_DB_DATABASE_ID = os.getenv("COSMOS_DB_DATABASE_ID")
    COSMOS_DB_COLLECTION_ID = os.getenv("COSMOS_DB_COLLECTION_ID");

    client = cosmos_client.CosmosClient(COSMOS_DB_END_POINT, {'masterKey': COSMOS_DB_MASTER_KEY})
    document_link = "dbs/" + COSMOS_DB_DATABASE_ID + "/colls/" + COSMOS_DB_COLLECTION_ID

    for item in client.QueryItems(document_link,
                                  'SELECT * FROM ' + COSMOS_DB_COLLECTION_ID,
                                  {'enableCrossPartitionQuery': True}):
        item['created'] += '123'
        print(json.dumps(item, indent=True))
        client.ReplaceItem(document_link, item, options=None)

1 个答案:

答案 0 :(得分:2)

您要使用的方法是ReplaceItem。您将需要查询容器以获取文档(以便您具有该文档的自身链接),然后调用此方法并传递更新的文档。