Pythonを使用してNoSQL用のデータベースをAzure Cosmos DBに作成する

Azure Cosmos DB のデータベースは、1 つ以上のコンテナーの管理単位です。 コンテナーを作成または管理するには、まずデータベースを作成する必要があります。

データベースに名前を付ける

Azure Cosmos DB では、データベースは名前空間に似ています。 データベースを作成すると、データベース名は、データベース リソースと子リソースへのアクセスに使用される URI のセグメントを形成します。

作成されると、データベースの URI は次の形式になります。

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

データベースの作成

データベースを作成するには、次のいずれかのメソッドを呼び出します。

データベースの作成

次の例では、 CosmosClient.create_database メソッドを使用してデータベースを作成します。 同じ名前のデータベースが存在する場合、このメソッドは例外をスローします。

try:
    database = client.create_database(id=DATABASE_ID)
    print(f"Database created: {database.id}")

except CosmosResourceExistsError:
    print("Database already exists.")

データベースがまだ存在しない場合は作成する

次の例では、 CosmosClient.create_database_if_not_exists メソッドを使用してデータベースを作成します。 データベースが存在する場合、このメソッドはデータベース設定を返します。 前の create メソッドと比較して、データベースが既に存在する場合、このメソッドは例外をスローしません。 このメソッドは、同じコードを複数回実行する場合にエラーを回避するのに役立ちます。

try:
    database = client.create_database_if_not_exists(id=DATABASE_ID)
    print(f"Database created or returned: {database.id}")

except CosmosHttpResponseError:
    print("Request to the Azure Cosmos database service failed.")

データベースを非同期的に作成する

azure.cosmos.aio 名前空間で同様のオブジェクトとメソッドを使用して、データベースを非同期的に作成することもできます。 たとえば、 CosmosClient.create_database メソッドまたは CosmosClient.create_database_if_not_exists メソッドを使用します。

非同期操作は、複数の操作を並列で実行する場合に便利です。 詳細については、「非同期クライアントの使用を参照してください。

応答の解析

上記の例では、要求からの応答は DatabaseProxyであり、これは特定のデータベースと対話するためのインターフェイスです。 プロキシから、メソッドにアクセスしてデータベースに対する操作を実行できます。

次の例は、データベース オブジェクトを返すcreate_database_if_not_existsメソッドを示しています。

database = client.create_database_if_not_exists(id=DATABASE_ID)
for container in database.list_containers():
    print(f'Container name: {container["id"]}')

次のステップ

データベースを作成したので、次のガイドを使用してコンテナーを作成します。