Creación de un contenedor en Azure Cosmos DB para NoSQL mediante Python

Los contenedores de Azure Cosmos DB almacenan conjuntos de elementos. Para poder crear, consultar o administrar elementos, primero debe crear un contenedor.

Asignar un nombre a un contenedor

En Azure Cosmos DB, un contenedor es análogo a una tabla de una base de datos relacional. Al crear un contenedor, el nombre del contenedor forma un segmento del URI que se usa para acceder al recurso de contenedor y a los elementos secundarios.

Una vez creado, el URI de un contenedor tiene este formato:

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

Creación de un contenedor

Para crear un contenedor, llame a uno de los métodos siguientes:

Creación de un contenedor

En el ejemplo siguiente se crea un contenedor con el DatabaseProxy.create_container método . Este método produce una excepción si el contenedor con el mismo nombre ya existe.

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

Cree un contenedor si aún no existe

En el ejemplo siguiente se crea un contenedor con el DatabaseProxy.create_container_if_not_exists método . En comparación con el método create anterior, este método no produce una excepción si la base de datos ya existe. Este método es útil para evitar errores si ejecuta el mismo código varias veces.

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

Creación de un contenedor de forma asincrónica

También puede crear un contenedor de forma asincrónica mediante métodos y objetos similares en el espacio de nombres azure.cosmos.aio . Por ejemplo, use el método DatabaseProxy.create_container o el método CosmosClient.create_container_if_not_exists .

Trabajar de forma asincrónica es útil cuando desea realizar varias operaciones en paralelo. Para obtener más información, consulte Uso del cliente asincrónico.

Análisis de la respuesta

En los ejemplos anteriores, la respuesta de las solicitudes es , ContainerProxyque es una interfaz para interactuar con un contenedor de base de datos. Desde el proxy, puede acceder a los métodos para realizar operaciones en el contenedor.

En el ejemplo siguiente se muestra el método create_container_if_not_exists que devuelve un objeto contenedor .

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