删除 CosmosDB 容器项
Delete CosmosDB Container Items
我正在尝试创建一个 Azure 函数(在 Python 中实现)来删除 CosmosDB 容器中的项目。使用 Azure Cosmos DB 输入和输出绑定,我能够添加、查询和更新项目,但我找不到可以删除项目的方法。是否可以使用绑定方法删除项目?
以下代码是我目前用来进行简单更新的代码。
_初始化_.py文件
import logging
import azure.functions as func
def main(req: func.HttpRequest, doc: func.Out[func.Document]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
departure_time = ""
arrival_time = ""
try:
req_body = req.get_json()
except ValueError:
pass
else:
bc_id_no = req_body.get('bc_id_no')
trip_id = req_body.get('trip_id')
departure_time = req_body.get('departure_time')
arrival_time = req_body.get('arrival_time')
if bc_id_no and trip_id:
newdocs = func.DocumentList()
input_dict = {
"bc_id_no": bc_id_no,
"id": trip_id,
"departure_time": departure_time,
"arrival_time": arrival_time
}
newdocs.append(func.Document.from_dict(input_dict))
doc.set(newdocs)
return func.HttpResponse(f"This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"bc_id_no or trip_id not available",
status_code=200
)
function.json
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
],
"route": "update_rec"
},
{
"type": "cosmosDB",
"direction": "out",
"name": "doc",
"databaseName": "mockDB",
"collectionName": "mockCollection",
"connectionStringSetting": "AzureCosmosDBConnectionString"
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
了解可以使用输入绑定的 sqlQuery 配置属性来指定删除语句(甚至不太确定这是否是一个好习惯..)但只是想知道是否有其他删除方法可用.
绑定只支持查询、读取(输入绑定)或添加(输出绑定),不支持删除。
没有您可以传递的配置会使绑定执行删除,它只是不在代码中:https://github.com/Azure/azure-webjobs-sdk-extensions/tree/cosmos/v3.x/src/WebJobs.Extensions.CosmosDB
我能想到的唯一替代方法是,如果您直接在函数内使用 Python SDK 来执行删除:https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-python
只需确保在执行范围之外创建和维护实例:https://docs.microsoft.com/azure/azure-functions/manage-connections#static-clients
我正在尝试创建一个 Azure 函数(在 Python 中实现)来删除 CosmosDB 容器中的项目。使用 Azure Cosmos DB 输入和输出绑定,我能够添加、查询和更新项目,但我找不到可以删除项目的方法。是否可以使用绑定方法删除项目?
以下代码是我目前用来进行简单更新的代码。
_初始化_.py文件
import logging
import azure.functions as func
def main(req: func.HttpRequest, doc: func.Out[func.Document]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
departure_time = ""
arrival_time = ""
try:
req_body = req.get_json()
except ValueError:
pass
else:
bc_id_no = req_body.get('bc_id_no')
trip_id = req_body.get('trip_id')
departure_time = req_body.get('departure_time')
arrival_time = req_body.get('arrival_time')
if bc_id_no and trip_id:
newdocs = func.DocumentList()
input_dict = {
"bc_id_no": bc_id_no,
"id": trip_id,
"departure_time": departure_time,
"arrival_time": arrival_time
}
newdocs.append(func.Document.from_dict(input_dict))
doc.set(newdocs)
return func.HttpResponse(f"This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"bc_id_no or trip_id not available",
status_code=200
)
function.json
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
],
"route": "update_rec"
},
{
"type": "cosmosDB",
"direction": "out",
"name": "doc",
"databaseName": "mockDB",
"collectionName": "mockCollection",
"connectionStringSetting": "AzureCosmosDBConnectionString"
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
了解可以使用输入绑定的 sqlQuery 配置属性来指定删除语句(甚至不太确定这是否是一个好习惯..)但只是想知道是否有其他删除方法可用.
绑定只支持查询、读取(输入绑定)或添加(输出绑定),不支持删除。
没有您可以传递的配置会使绑定执行删除,它只是不在代码中:https://github.com/Azure/azure-webjobs-sdk-extensions/tree/cosmos/v3.x/src/WebJobs.Extensions.CosmosDB
我能想到的唯一替代方法是,如果您直接在函数内使用 Python SDK 来执行删除:https://docs.microsoft.com/azure/cosmos-db/sql-api-sdk-python
只需确保在执行范围之外创建和维护实例:https://docs.microsoft.com/azure/azure-functions/manage-connections#static-clients