Python Программа для создания Контейнера, если он не существует с ключом раздела и уникальным Ключом - PullRequest
0 голосов
/ 20 марта 2020

Я хочу написать 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

plz предлагает API, который создаст контейнер, если его нет.

1 Ответ

1 голос
/ 20 марта 2020

@ Гаурав Мантри Ниже приведен рабочий код, предложенный вами. для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...