Creare un contenitore in Azure Cosmos DB per NoSQL usando Python

SI APPLICA A: NoSQL

I contenitori in Azure Cosmos DB archiviano set di elementi. Prima di poter creare, eseguire query o gestire elementi, è necessario creare un contenitore.

Assegnare un nome a un contenitore

In Azure Cosmos DB, un contenitore è analogo a una tabella in un database relazionale. Quando si crea un contenitore, il nome del contenitore costituisce un segmento dell'URI usato per accedere alla risorsa del contenitore e a qualsiasi elemento figlio.

Dopo la creazione, l'URI per un contenitore si presenta nel seguente formato:

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

Creazione di un contenitore

Per creare un contenitore, usare uno dei metodi seguenti:

Creazione di un contenitore

Nell'esempio seguente viene creato un contenitore con il metodo DatabaseProxy.create_container. Questo metodo genera un'eccezione se esiste già un contenitore con lo stesso nome.

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

Creare un contenitore se non esiste già

Nell'esempio seguente viene creato un contenitore con il metodo DatabaseProxy.create_container_if_not_exists. Rispetto al metodo di creazione precedente, questo metodo non genera un'eccezione se il database è già esistente. Questo metodo è utile per evitare errori se si esegue lo stesso codice più volte.

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

Creare un contenitore in modo asincrono

È anche possibile creare un database in modo asincrono usando oggetti e metodi simili nello spazio dei nomi azure.cosmos.aio. Ad esempio, usare il metodo DatabaseProxy.create_database o il metodo CosmoClient.create_database_if_not_exists.

Lavorare in modo asincrono è utile quando si vogliono eseguire più operazioni in parallelo. Per ottenere maggiori informazioni, consultare Uso del client asincrono.

Analisi delle risposte

Negli esempi precedenti, la risposta dalle richieste è ContainerProxy, che è un'interfaccia per interagire con un contenitore DB. Dal proxy è possibile accedere ai metodi per eseguire operazioni sul contenitore.

Nell'esempio seguente viene illustrato il metodo create_container_if_not_exists che restituisce un oggetto contenitore.

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

Passaggi successivi

Dopo aver creato un contenitore, usare la guida successiva per creare elementi.