Azure Cosmos DB のコンテナーには、項目のセットが格納されます。 アイテムを作成、クエリ、または管理するには、まずコンテナーを作成する必要があります。
コンテナーに名前を付けます
Azure Cosmos DB では、コンテナーはリレーショナル データベースのテーブルに似ています。 コンテナーを作成すると、コンテナー名は、コンテナー リソースとすべての子項目にアクセスするために使用される URI のセグメントを形成します。
作成されると、コンテナーの URI は次の形式になります。
https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>/colls/<container-name>
コンテナーの作成
コンテナーを作成するには、次のいずれかのメソッドを呼び出します。
コンテナーの作成
次の例では、 DatabaseProxy.create_container メソッドを使用してコンテナーを作成します。 同じ名前のコンテナーが既に存在する場合、このメソッドは例外をスローします。
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.")
コンテナーがまだ存在しない場合は作成する
次の例では、 DatabaseProxy.create_container_if_not_exists メソッドを使用してコンテナーを作成します。 前の create メソッドと比較して、データベースが既に存在する場合、このメソッドは例外をスローしません。 このメソッドは、同じコードを複数回実行する場合にエラーを回避するのに役立ちます。
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.")
コンテナーを非同期的に作成する
azure.cosmos.aio 名前空間で同様のオブジェクトとメソッドを使用して、コンテナーを非同期的に作成することもできます。 たとえば、 DatabaseProxy.create_container メソッドまたは CosmosClient.create_container_if_not_exists メソッドを使用します。
非同期操作は、複数の操作を並列で実行する場合に便利です。 詳細については、「非同期クライアントの使用を参照してください。
応答の解析
上記の例では、要求からの応答は、DB コンテナーと対話するためのインターフェイスである ContainerProxyです。 プロキシからメソッドにアクセスして、コンテナーに対する操作を実行できます。
次の例は、コンテナー オブジェクトを返すcreate_container_if_not_exists メソッドを示しています。
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"]}')