Condividi tramite


Creare un contenitore in Azure Cosmos DB per NoSQL usando Python

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 contenitore e agli elementi figlio.

Dopo la creazione, l'URI per un contenitore è in questo formato:

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

Creare un contenitore

Per creare un contenitore, chiamare uno dei metodi seguenti:

Creare un contenitore

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

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 DatabaseProxy.create_container_if_not_exists metodo . Rispetto al metodo di creazione precedente, questo metodo non genera un'eccezione se il database esiste già. 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 altre informazioni, vedere Uso del client asincrono.

Analisi della risposta

Negli esempi precedenti, la risposta delle richieste è un oggetto 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"]}')