从python拒绝cosmos DB更新的触发器

2024-05-19 22:46:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些更新cosmos DB容器中记录的代码(参见下面的简化代码片段)。但是,还有其他独立的过程也会从其他系统更新相同的记录。在下面的示例中,如果状态是一个特定的值,我希望upsert_item()是一个no op,如果容器中的同一条记录已经更新到特定的“final”状态。解决这个问题的一种方法是在每次更新之前读取值,但这有点太贵了。有没有一种简单的方法可以基于服务器端触发器将upsert_item()变成no op?任何指点都将不胜感激

client = CosmosClient(<end_pt>, <key>)
database_name = "cosmosdb"
container_name = "solar_system"
db_client = client.get_database_client(database_name)
db_container = db_client.get_container_client(container_name)
uid, planet, state = get_planetary_config()

# How can I make this following update a no-op depending on current state in the database?
json_data = {"id": str(uid), "planet": planet, "state": state}
db_container.upsert_item(body=json_data)

Tags: no代码nameclientdbgetcontainer记录
1条回答
网友
1楼 · 发布于 2024-05-19 22:46:37

正如我所知,cosmos db server side trigger不满足您的需要。调用它是为了执行pre函数或post函数,而不是判断文档是否满足某些条件

因此,Cosmos Db本机不支持使用特定条件进行更新。在执行更新操作之前,需要读取值并判断条件

相关问题 更多 >