Partager via


Créer un conteneur dans Azure Cosmos DB for NoSQL à l’aide de Python

S’APPLIQUE À : NoSQL

Les conteneurs dans Azure Cosmos DB stockent des ensembles d’éléments. Avant de pouvoir créer, interroger ou gérer des éléments, vous devez d’abord créer un conteneur.

Nommer un conteneur

Dans Azure Cosmos DB, un conteneur est analogue à une table d’une base de données relationnelle. Lorsque vous créez un conteneur, le nom du conteneur forme un segment de l’URI utilisé pour accéder à la ressource de conteneur et à tous les éléments enfants.

Voici quelques règles rapides lors de l’affectation d’un nom à un conteneur :

  • Les noms de conteneur doivent comprendre entre 3 et 63 caractères
  • Les noms de conteneur ne peuvent contenir que des lettres minuscules, des chiffres ou le caractère de tiret (-).
  • Les noms de conteneurs doivent commencer par une lettre minuscule ou un chiffre.

Après création, l’URI d’un conteneur est au format suivant :

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

Créez un conteneur.

Pour créer un conteneur, utilisez l’une des méthodes suivantes :

Créez un conteneur.

L’exemple suivant crée un conteneur avec la méthode DatabaseProxy.create_container. Cette méthode lève une exception si le conteneur portant le même nom existe déjà.

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

Créer un conteneur s’il n’existe pas déjà

L’exemple suivant crée un conteneur avec la méthode DatabaseProxy.create_container_if_not_exists. Par rapport à la méthode create précédente, cette méthode ne lève pas d’exception si la base de données existe déjà. Cette méthode est utile pour éviter les erreurs si vous exécutez le même code plusieurs fois.

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

Créer un conteneur de manière asynchrone

Vous pouvez également créer une base de données de manière asynchrone à l’aide de méthodes et d’objets similaires dans l’espace de noms azure.cosmos.aio . Par exemple, utilisez la méthode DatabaseProxy.create_database ou la méthode CosmoClient.create_database_if_not_exists .

Le travail asynchrone est utile lorsque vous souhaitez effectuer plusieurs opérations en parallèle. Pour plus d’informations, consultez Utilisation du client asynchrone.

Analyse de la réponse

Dans les exemples ci-dessus, la réponse des requêtes est un ContainerProxy, qui est une interface permettant d’interagir avec un conteneur de base de données. À partir du proxy, vous pouvez accéder aux méthodes pour effectuer des opérations sur le conteneur.

L’exemple suivant montre la méthode create_container_if_not_exists qui retourne un objet conteneur .

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

Étapes suivantes

Maintenant que vous avez créé un conteneur, utilisez le guide suivant pour créer des éléments.