Freigeben über


Erstellen eines Containers in Azure Cosmos DB for NoSQL mit Python

GILT FÜR: NoSQL

Container in Azure Cosmos DB-Speichergruppen von Elementen. Bevor Sie Elemente erstellen, abfragen oder verwalten können, müssen Sie zunächst einen Container erstellen.

Benennen eines Containers

In Azure Cosmos DB ist ein Container analog zu einer Tabelle in einer relationalen Datenbank. Wenn Sie einen Container erstellen, bildet der Containername ein Segment des URI, der zum Zugreifen auf die Containerressource und alle untergeordneten Elemente verwendet wird.

Hier sind einige schnelle Regeln beim Benennen eines Containers:

  • Halten Sie Containernamen zwischen 3 und 63 Zeichen lang.
  • Containernamen dürfen nur Kleinbuchstaben, Ziffern oder einen Bindestrich (-) enthalten.
  • Containernamen müssen mit einem Kleinbuchstaben oder einer Zahl beginnen.

Nach dem Erstellen weist der URI für einen Container das folgende Format auf:

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

Erstellen eines Containers

Um einen Container zu erstellen, rufen Sie eine der folgenden Methoden auf:

Erstellen eines Containers

Im folgenden Beispiel wird ein Container mit der Methode DatabaseProxy.create_container erstellt. Diese Methode löst eine Ausnahme aus, wenn ein Container mit demselben Namen bereits vorhanden ist.

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

Erstellen eines Containers, falls er noch nicht vorhanden ist.

Im folgenden Beispiel wird ein Container mit der Methode DatabaseProxy.create_container_if_not_exists erstellt. Im Vergleich zur vorherigen Erstellungsmethode löst diese Methode keine Ausnahme aus, wenn die Datenbank bereits vorhanden ist. Diese Methode ist nützlich, um Fehler zu vermeiden, wenn Sie denselben Code mehrmals ausführen.

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

Asynchrones Erstellen eines Containers

Sie können eine Datenbank auch asynchron mit ähnlichen Objekten und Methoden im Namespace azure.cosmos.aio erstellen. Verwenden Sie beispielsweise die Methode DatabaseProxy.create_database oder die Methode CosmoClient.create_database_if_not_exists.

Das asynchrone Arbeiten ist nützlich, wenn Sie mehrere Vorgänge parallel ausführen möchten. Weitere Informationen finden Sie unter Verwenden des asynchronen Clients.

Analysieren der Antwort

In den Beispielen oben ist die Antwort auf die Anforderungen ein ContainerProxy. Hierbei handelt es sich um eine Schnittstelle für die Interaktion mit einem DB-Container. Über den Proxy können Sie auf Methoden zugreifen, um Vorgänge für den Container auszuführen.

Das folgende Beispiel zeigt die Methode create_container_if_not_exists, die ein container-Objekt zurückgibt.

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

Nächste Schritte

Nachdem Sie nun einen Container erstellt haben, verwenden Sie den nächsten Leitfaden zum Erstellen von Elementen.