python - 如果不存在分区键和唯一键,则使用 Python 程序创建容器
问题描述
我只想编写 python 脚本来创建容器,前提是它不存在分区键和唯一键。
Steps for Creating Alert Container
1. Create Container With Container ID: alerts
2. Add Partition Key as /user_tenant
3. Add Unique Key as /alert_id
参考链接:https ://github.com/Azure/azure-cosmos-python#create-a-container
如果不存在,请建议将创建容器的 api。
解决方案
@Gaurav Mantri 下面是您建议的工作代码。对于uniqueKeys,我们需要将其添加到uniqueKeyPolicy中,如下面的代码所示。
import azure.cosmos.documents as documents
from azure.cosmos import cosmos_client, http_constants, errors
import os
url = os.environ['COSMOS_DB_END_POINT']
key = os.environ['COSMOS_DB_MASTER_KEY']
database_name = os.environ["COSMOS_DB_DATABASE_ID"]
client = cosmos_client.CosmosClient(url, {'masterKey': key})
container_definition = {'id': 'alerts_test',
'partitionKey':
{
'paths': ['/user_tenant'],
'kind': documents.PartitionKind.Hash
},
'uniqueKeyPolicy': {
'uniqueKeys':
[
{'paths': ['/alert_id']}
]
}
}
try:
container = client.CreateContainer("dbs/" + database_name, container_definition, {'offerThroughput': 400})
print("New Container Created:")
print(container)
except errors.HTTPFailure as e:
if e.status_code == http_constants.StatusCodes.CONFLICT:
container = client.ReadContainer("dbs/" + database_name + "/colls/" + container_definition['id'])
print(container)
else:
raise e
推荐阅读
- wordpress - 自动生成的页面文件
- python - 如何将 discord.py 机器人状态设置为听/看/等
- reactjs - 在不使用 refs 的情况下处理所有输入字段的更改事件
- jenkins - 如何在 Jenkins 文件中连接变量
- node.js - 在nodejs中处理大量项目
- algorithm - 矩形的最大子集,使得没有矩形适合任何其他矩形
- amazon-s3 - Cloudfront createInvalidation 不会被 Lambda 随机触发
- javascript - 如何撤消/重做 javascript 正则表达式 .replace 脚本?
- java - How to add data to spinner dynamically? Keep the spinner data when every time the activity creates. Android
- postgresql - PostgreSQL SELECT query using same structure as a DELETE query