当前位置: 首页 > 知识库问答 >
问题:

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

罗智刚
2023-03-14

我想从 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个答案

安明亮
2023-03-14

您想要使用的方法是< code>ReplaceItem。您需要查询容器来获取文档(这样您就有了该文档的self链接),然后调用这个方法并传递更新后的文档。

 类似资料:
  • 问题内容: 我有一个类似于 我想获取每个“ deviceId”的最新“数据”(使用message.ts作为时间戳)。 到目前为止,我已经设法使用查询按时间戳记的顺序取回了数据, 但是我不知道如何删除重复的设备记录。 这可以在CosmosDB SQL引擎内完成吗? 问题答案: 感谢Mark Brown的评论,我发现以下内容似乎是此问题的正确解决方案。不仅仅只是一次性使用一些SQL那样优雅,但这确实是

  • 问题内容: 我正在使用Python,并且有一个JSON文件,我想在其中更新与给定键相关的值。也就是说,我包含以下数据 并且我只想将与键相关的值从更改为,以便更新后的文件如下所示: 我该怎么做? 我尝试了以下操作,但没有成功(更改未保存到文件中): 问题答案: 您根本没有保存更改的数据。您必须先加载,然后修改,然后再保存。无法就地修改JSON文件。 您也可以这样做: 如果要确保安全,请首先将新数据写

  • 问题内容: 我已从2012年初开始安装2.7版。对于在安装最新版本之前是否应该完全卸载并擦除此版本,我无法达成共识。 “软件”删除旧版本?硬删除/清除旧版本?安装在顶部? 我在某处看到了一个特殊的安装/升级过程,该过程使用Python安装的“分段”方法,将不同的版本分开并保持功能。不知道这是否是事实上的标准方法。 我还想知道Revo是否太过热情,是否可能导致清除仍然需要的残留物(例如环境/ PAT

  • 我想使用POJO作为源来更新JOOQ记录中更改的字段<代码>记录。from(Object)几乎正确,但根据文档 结果记录的所有值的内部“更改”标志都将设置为true。 我只希望实际更改的字段(由对象决定。等于(对象,对象))更新其标志。 这有两个原因: 我不想触发插入

  • 主要的问题是,如何更新表单中选择的几个字段。我想让用户选择他们想要更新的字段。例如,我有form类: 之后,我将在类中设置字段,例如,如果用户只想更改他们的名称和姓氏,我将通过方法从现有的中获取其余的字段,然后更改一些字段并将更改的对象保存到数据库中。

  • 问题内容: 我正在运行Ubuntu 9:10,并安装了一个名为M2Crypto的软件包(版本为0.19.1)。我需要下载,构建和安装最新版本的M2Crypto软件包(0.20.2)。 0.19.1软件包的文件位于多个位置,包括(/ usr / share / pyshared和/usr/lib/pymodules.python2.6)。 在安装0.20.2之前如何从系统中完全卸载版本0.19.1?