Python から Azure CosmosDB を操作する (クイックスタート深掘り)


今回は Python から Azure Cosmos DB を操作する方法をクイックスタートを参考に見ていきます。

準備

まずは、
最新の Python のインストール -> https://www.python.org/
Visual Studio Code にて Python のインストールを実行します。VS Code での Python インストールは任意ですが、VS Code で直接 Python をいじれたり、色々なショートカットがあるので大変便利です。
https://marketplace.visualstudio.com/items?itemName=ms-python.python#overview

Python アプリの Clone

Microsoft が公開している GitHub からコードをクローンします。
git clone https://github.com/Azure-Samples/azure-cosmos-db-python-getting-started.git

Visual Studio の Terminal を開き、Clone したローカルディレクトリまで移動しておきましょう。

Cosmos DB のデプロイ

Azure Cosmos DB をデプロイします。今回はシンプルな Cosmos DB を作成するので、Azure CLI からデプロイします。

az cosmosdb create --name <account-name> --resource-group <resource-group-name>

作成できたら、以下コマンドを Azure CLI から実行し、Endpoint と Key を取得します。

az cosmosdb keys list --name <account-name> --resource-group <resource-group-name>
az cosmosdb show --name <account-name> --resource-group <resource-group-name>

Visual Studio の Terminal からデプロイ

該当ディレクトリまで進んだ Visual Studio のターミナルから、以下コードを実行します。

python cosmos_get_started.py

すると以下が出力されます。

Read item with id Smith_d457f895-3756-49cd-a629-e7708d7ed252. Operation consumed 1 request units
Read item with id Johnson_3bd2aa16-742f-4aed-9a95-3adc548a94e3. Operation consumed 1 request units
Read item with id Wakefield_c73aa98d-7104-4b01-a3da-4946081575ff. Operation consumed 1 request units
Query returned 2 items. Operation consumed 3.09 request units

Portal ページを確認すると、Cosmos DB を操作できていることが確認できました。

深掘り

今回少しハマったのが、以下エラーが発生したときです。

Traceback (most recent call last):
File "cosmos_get_started.py", line 1, in <module>
    from azure.cosmos import exceptions, CosmosClient, PartitionKey
ImportError: cannot import name 'exceptions' from 'azure.cosmos' (...\lib\site-packages\azure\cosmos\__init__.py)

このエラーは、Azure Cosmos DB の SDK が正しくインストールされていないことで発生するエラーです。-perp のバージョンのAzure Cosmos SDK をインストールしている場合、このエラーにぶち当たります。
解決策ですが、以下の Python ドキュメントに記載の方法で回避ができます。

https://pypi.org/project/azure-cosmosdb-table/
(参照元)https://docs.microsoft.com/ja-jp/azure/cosmos-db/table-sdk-python

また、以下ページに Python SDK の正しいインストール方法が記載されているので、みてみると参考になります!