Udostępnij za pośrednictwem


Tworzenie kontenera w usłudze Azure Cosmos DB for NoSQL przy użyciu języka Python

DOTYCZY: NoSQL

Kontenery w usłudze Azure Cosmos DB przechowują zestawy elementów. Przed utworzeniem, wykonywaniem zapytań o elementy lub zarządzanie nimi należy najpierw utworzyć kontener.

Nazywanie kontenera

W usłudze Azure Cosmos DB kontener jest analogiczny do tabeli w relacyjnej bazie danych. Podczas tworzenia kontenera nazwa kontenera tworzy segment identyfikatora URI używanego do uzyskiwania dostępu do zasobu kontenera i wszystkich elementów podrzędnych.

Po utworzeniu identyfikator URI kontenera ma następujący format:

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

Tworzenie kontenera

Aby utworzyć kontener, wywołaj jedną z następujących metod:

Tworzenie kontenera

W poniższym przykładzie zostanie utworzony kontener z DatabaseProxy.create_container metodą . Ta metoda zgłasza wyjątek, jeśli kontener o tej samej nazwie już istnieje.

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.")

Utwórz kontener, jeśli jeszcze nie istnieje

W poniższym przykładzie zostanie utworzony kontener z DatabaseProxy.create_container_if_not_exists metodą . W porównaniu z poprzednią metodą create ta metoda nie zgłasza wyjątku, jeśli baza danych już istnieje. Ta metoda jest przydatna do unikania błędów w przypadku wielokrotnego uruchamiania tego samego kodu.

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.")

Tworzenie kontenera asynchronicznie

Bazę danych można również utworzyć asynchronicznie przy użyciu podobnych obiektów i metod w przestrzeni nazw azure.cosmos.aio . Na przykład użyj metody DatabaseProxy.create_database lub metody CosmoClient.create_database_if_not_exists .

Praca asynchroniczna jest przydatna, gdy chcesz wykonać wiele operacji równolegle. Aby uzyskać więcej informacji, zobacz Using the asynchronous client (Używanie klienta asynchronicznego).

Analizowanie odpowiedzi

W powyższych przykładach odpowiedź z żądań to ContainerProxy, który jest interfejsem umożliwiającym interakcję z kontenerem bazy danych. Z poziomu serwera proxy możesz uzyskać dostęp do metod wykonywania operacji na kontenerze.

W poniższym przykładzie przedstawiono metodę create_container_if_not_exists zwracającą obiekt kontenera.

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"]}')

Następne kroki

Po utworzeniu kontenera użyj następnego przewodnika, aby utworzyć elementy.