今回は 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 の正しいインストール方法が記載されているので、みてみると参考になります!