Pythonでazure-cosmosを用いてAzure Cosmos DBデータベース内にコンテナを作成する

スポンサーリンク

Pythonでazure-cosmosを用いてAzure Cosmos DBデータベース内にコンテナを作成してみます。

この記事は「Pythonでazure-cosmosを用いてAzure Cosmos DBデータベースを作成する」という記事の続きでもあります。

なお、今回もazure-cosmosを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■仮想環境に入る

今回はazure-cosmosを用いてAzure Cosmos DBデータベース内にコンテナを作成しますが、まずWindows10のコマンドプロンプトを起動します。

C:\Users\user_>cd azure-cosmos-example

作成後、上記のコマンドを入力し、Enterキーを押します。「cd」コマンドで「azure-cosmos-example」ディレクトリ内に移動します。

■仮想環境への切り替え

C:\Users\user_\azure-cosmos-example>.venv\Scripts\activate.bat

移動後、上記のコマンドを入力し、Enterキーを押します。仮想環境のディレクトリ内に作成された activateスクリプトを実行し、仮想環境に入ります。今回は仮想環境下でazure-cosmosをインストールしていますので、仮想環境に入ります。

(.venv) C:\Users\user_\azure-cosmos-example>

Enterキーを押すと、「(.venv)」と表示されます。これで仮想環境に入ることができました。

■azure-cosmosを用いてAzure Cosmos DBデータベース内にコンテナを作成する

仮想環境に入った後に「azure-cosmos-example」ディレクトリ内に「test_db_container.py」というスクリプトファイルを作成します。作成後、コードエディタを開き、ファイル内のコードを記述していきます。

■コード

from azure.cosmos import CosmosClient, exceptions,PartitionKey

URL = "URI"
KEY = "プライマリキー"
client = CosmosClient(URL, credential=KEY)
DATABASE_NAME = 'test_db'
database = client.get_database_client(DATABASE_NAME)
CONTAINER_NAME = 'test_1'

try:
    container = database.create_container(id=CONTAINER_NAME,partition_key=PartitionKey(path="/test_Name"))
except exceptions.CosmosResourceExistsError:
    container = database.get_container_client(CONTAINER_NAME)
except exceptions.CosmoHttpResponseError:
    raise

from importでazure.cosmosのCosmosClientとexceptionsとPartitionKeyを呼び出します。その後、URLとKEYという変数を定義し、その中にURLとプライマリキーを格納します。(読み取り/書き込みキーとURLの取得

その後、clientという変数を定義し、その中でCosmosClient()を用います。括弧内には、第1の引数,パラメータとしてURL変数を渡します。次に第2の引数,パラメータとしてKEYを渡します。これでCosmosClient の初期化を行います。

CosmosClient の初期化設定後、DATABASE_NAMEという変数を定義し、その中にデータベースの名前を格納します。今回は「Pythonでazure-cosmosを用いてAzure Cosmos DBデータベースを作成する」で作成した「test_db」を格納します。

格納後、databaseという変数を定義し、その中でclient.get_database_client()を用います。括弧内には引数,パラメータとしてDATABASE_NAME変数を渡します。これで既存のデータベース(test_db)を取得されます。取得された情報が、database変数に格納されます。

格納後、CONTAINER_NAMEという変数を定義し、その中に作成するコンテナの名前を格納します。

格納後、try-except文を用いて、例外処理を設定します。クライアントの認証が成功した場合はdatabase.create_container()を用いて、データベース内にコンテナが作成されます。この時に括弧内に第1の引数,パラメータとして、CONTAINER_NAME変数を渡します。次に第2の引数,パラメータとしてPartitionKey(パーティションキー)を渡します。PartitionKey(パーティションキー)はパスを指定します。今回は「”/test_Name”」とします。

次にResource(リソース、データベース)内にすでにコンテナが存在する場合は、database.get_container_client()で既存のIDを持つコンテナを取得します。さらに、認証後に不成功のステータスコードを受信した場合は、raise文を使用します。

最後にコードを記述後、ファイルを保存します。

■実行・検証

保存後、コマンドプロンプト上で仮想環境に入った状態でスクリプトファイルを実行してみます。

(.venv) C:\Users\user_\azure-cosmos-example>python test_db_container.py

実行してみると、何も出力されませんが、これでデータベース内にコンテナが作成されました。

作成後、「Microsoft Azure Portal」の「サインイン」からサインインを行い、「サービス」の「Azure Cosmos DB」へ移動します。移動後、「Azure Cosmos DB」のページが表示されますので、ページ内から作成したAzure Cosmos DBアカウントの名前をクリックします。クリックすると、Azure Cosmos DBアカウントの「概要」などが表示されます。表示された左メニューから「データ エクスプローラー」をクリックします。クリックすると、azure-cosmosを用いて作成したAzure Cosmos DBデータベース内のコンテナが表示されていることが確認できました。

さらにAzure Cosmos DBデータベース内のコンテナに、database.create_container()を用いた時に引数,パラメータとして渡したPartitionKey(パーティションキー)である「”/test_Name”」が作成されていることも確認できました。

コメント

タイトルとURLをコピーしました