Поделиться через


Создание контейнера в Azure Cosmos DB для NoSQL с помощью Python

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Контейнеры в Azure Cosmos DB хранят наборы элементов. Прежде чем создавать и запрашивать элементы или управлять ими, необходимо сначала создать контейнер.

Присвойте имя контейнеру

В Azure Cosmos DB контейнер аналогичен таблице в реляционной базе данных. При создании контейнера имя контейнера формирует сегмент URI, используемый для доступа к ресурсу контейнера и любым дочерним элементам.

После создания URI контейнера имеет следующий формат:

https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>/colls/<container-name>

Создание контейнера

Для создания контейнера вызовите один из следующих методов:

Создание контейнера

В следующем примере создается контейнер с методом DatabaseProxy.create_container . Этот метод создает исключение, если контейнер с тем же именем уже существует.

try:
    partition_key_path = PartitionKey(path="/categoryId")
    container = database.create_container(
        id=CONTAINER_ID,
        partition_key=partition_key_path,
        offer_throughput=400,
    )
    print(f"Container created: {container.id}")

except CosmosResourceExistsError:
    print("Container already exists.")

Создать контейнер, если он еще не существует.

В следующем примере создается контейнер с методом DatabaseProxy.create_container_if_not_exists . По сравнению с предыдущим методом создания этот метод не создает исключение, если база данных уже существует. Этот метод полезен для предотвращения ошибок при многократном выполнении одного и того же кода.

try:
    partition_key_path = PartitionKey(path="/categoryId")
    container = database.create_container_if_not_exists(
        id=CONTAINER_ID,
        partition_key=partition_key_path,
        offer_throughput=400,
    )
    print(f"Container created or returned: {container.id}")

except CosmosHttpResponseError:
    print("Request to the Azure Cosmos database service failed.")

Асинхронное создание контейнера

Вы также можете создать базу данных асинхронно с помощью аналогичного объекта и методов в пространстве имен azure.cosmos.aio . Например, используйте метод DatabaseProxy.create_database или метод CosmoClient.create_database_if_not_exists .

Работа асинхронно полезна при параллельном выполнении нескольких операций. Дополнительные сведения см. в разделе "Использование асинхронного клиента".

Анализ ответа

В приведенных выше примерах ответ от запросов — это ContainerProxyинтерфейс для взаимодействия с контейнером базы данных. С прокси-сервера можно получить доступ к методам выполнения операций в контейнере.

В следующем примере показан метод create_container_if_not_exists , возвращающий объект контейнера .

partition_key_path = PartitionKey(path="/categoryId")
container = database.create_container_if_not_exists(
    id=CONTAINER_ID,
    partition_key=partition_key_path,
    offer_throughput=400,
)
for doc in container.read_all_items(max_item_count=10):
    print(f'Doc id: {doc["id"]}')

Следующие шаги

Теперь, когда вы создали контейнер, используйте следующее руководство для создания элементов.