Compartir a través de


Creación de un contenedor en Azure Cosmos DB for NoSQL con Python

SE APLICA A: NoSQL

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

Asignación de un nombre para un contenedor

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

Estas son algunas reglas rápidas de la asignación de un nombre a un contenedor:

  • Los nombres de contenedor pueden tener entre 3 y 63 caracteres.
  • Los nombres de contenedor solo pueden contener letras en minúsculas, números y el carácter de guion (-).
  • Los nombres de contenedor deben empezar por una letra en minúsculas o un número.

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

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

Crear un contenedor

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

Crear un contenedor

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

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

Creación de un contenedor si aún no existe

En el siguiente ejemplo se crea un contenedor con el método DatabaseProxy.create_container_if_not_exists. A diferencia del método creado anteriormente, 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 una base de datos de forma asincrónica usando métodos y objetos similares en el espacio de nombres azure.cosmos.aio. Por ejemplo, use el método DatabaseProxy.create_database o el método CosmoClient.create_database_if_not_exists.

Trabajar de forma asincrónica es útil cuando se quieren 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 un objeto ContainerProxy, que es una interfaz para interactuar con un contenedor de base de datos. Desde el proxy, se puede acceder a métodos para realizar operaciones en el contenedor.

En el siguiente ejemplo 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"]}')

Pasos siguientes

Ahora que ha creado un contenedor, use la siguiente guía para crear elementos.