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

適用対象: NoSQL

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

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

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

データベースに名前を付ける場合の簡単な規則を次に示します。

  • データベース名は 3 から 63 文字までの長さにする必要があります。
  • データベース名には、小文字、数字、ダッシュ文字のみを含めることができます。
  • データベース名は小文字または数字で始まる必要があります

作成されると、データベースの 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 メソッドや 'CosmoClient.create_database_if_not_exists メソッドを使用します。

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

応答の解析

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

次の例は、database オブジェクトを返す 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"]}')

次のステップ

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