【Python】Azure CosmosDBのデータ参照方法|データベース・コンテナ接続方法も言及

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • Pythonを用いてAzure CosmosDBに接続し、データベース&コンテナ内のデータを取得する方法が知りたい。
目次

Azure CosmosDBとは

Azure CosmosDBとは、NoSQL(非関係型データベース)の一種であり、データを柔軟に保存・管理するためのオープンソースのデータベース管理システムです。

【事前準備】Azure CosmosDBの設定

AzureのCosmosDBに保存されたデータを参照する前に、以下が既に対応済みか確認しましょう。

データベース・コンテナ・アイテムの作成

Pythonを用いてCosmosDB内のデータを参照する場合、CosmosDB画面で「データベース」「コンテナ」「アイテム」がそれぞれ作成されているか事前確認が必要です。

スクロールできます
DatabaseDatabaseはContainer(コンテナ)を管理するための作業空間を指します。複数のコンテナを一つのデータベース内でまとめて管理します。
ContainerContainerは複数のItem(アイテム)を保存するために用います。
ItemItemはドキュメントと呼ばれるJSON形式のデータを保存するためのものです。

Azure CosmosDBのエンドポイント・アクセスキー発行

データベース作成後、PythonでアクセスするためのURLとキーを取得します。

上図画面の画面を参考に、CosmosDBのデータベース画面からURLPRIMARY KEYをそれぞれ取得しましょう。

  1. Azure CosmosDBの画面を開く
  2. 作成したデータベースを開く
  3. 設定タブにある「キー」を選択
  4. 「URL」および「PRIMARY KEY」をそれぞれ手元にメモする

【事前準備】AzureCosmosDB操作用Pythonライブラリのインストール

Pythonを用いてAzure CosmosDBを操作する場合、次のようなライブラリの事前インストールが必要です。

pip install azure-cosmos

【Python実践】Azure CosmosDBのデータ参照

実際にPythonを用いてCosmosDBを操作する方法について言及します。

CosmosDBの認証情報設定

PythonからCosmosDBにアクセスするための認証コードを記載します。

前述で取得したCOSMOS_URICOSMOS_ACCESS_KEYをそれぞれ記述した以下コードを実行しましょう。

from azure.cosmos import CosmosClient

# URI
COSMOS_URI        = "..........."

# Primary Key
COSMOS_ACCESS_KEY = "..........."

# CosmosDB接続
cosmos_client   = CosmosClient(COSMOS_URI, COSMOS_ACCESS_KEY)

データベース接続とコンテナプロパティ情報取得

CosmosDBに作成したデータベースを指定し、データベース内のコンテナ情報を取得する方法を解説します。

コード

DATABASE_NAMEに参照したいデータベース名を入力した上で以下コードを実行しましょう。

# ====================================================================
# 参照先(データベース)
# ==================================================================== 

# データベース名
DATABASE_NAME     = "..........."

# ====================================================================
# CosmosDBのデータベース接続
# ==================================================================== 

# 参照先(データベース&コンテナ)の指定
cosmos_database = cosmos_client.get_database_client(DATABASE_NAME)

# コンテナ情報一覧取得
cosmos_container_list = list(cosmos_database.list_containers())

出力イメージ

上記で記述したcosmos_container_listを出力すると、データベース内に作成されたコンテナのプロパティ情報が一覧表示されます。

# 出力
print(cosmos_container_list)

# 出力イメージ
# [{'id': 'Your Container Name',
#   'indexingPolicy': {'': '',
#    'automatic': True,
#    'includedPaths': [{'path': ''}],
#    'excludedPaths': [{'path': ''}]},
#   'partitionKey': {'paths': ['/id'], 'kind': 'Hash'},
#   'uniqueKeyPolicy': {'uniqueKeys': []},
#   'conflictResolutionPolicy': {'mode': '',
#   'geospatialConfig': {'type': ''},
#   '_docs': 'docs/',
#   '_conflicts': 'conflicts/'},

コンテナからJSON形式のデータ抽出

コンテナ内に保存されているJSON形式のデータ(アイテム)を抽出する方法について言及します。

コード

CONTAINER_NAMEに参照したいコンテナ名を入力した上で以下コードを実行しましょう。

# ====================================================================
# 参照先(コンテナ)
# ==================================================================== 

# コンテナ名
CONTAINER_NAME    = "..........."

# ====================================================================
# CosmosDB データベース内の特定のコンテナに接続
# ==================================================================== 

# コンテナ
cosmos_container = cosmos_database.get_container_client(CONTAINER_NAME)

# ====================================================================
# コンテナ内のデータ参照
# ==================================================================== 

# クエリアイテム参照(select all from containers)
query = "SELECT * FROM c"

# データ取得
query_items  = cosmos_container.query_items(query, enable_cross_partition_query=True)
listed_items = list(query_items)

上記を実行すると、指定したコンテナ内のアイテム情報が一括取得できます。アイテム情報の取得条件はqueryのSQL構文を修正することで柔軟に変更可能です。

出力イメージ

上記で記述したlisted_itemsを出力すると、コンテナ内のアイテムデータが取得できます。

# 出力
print(listed_items)

# 出力イメージ
# [
#   {'id': '1001',
#   'title': 'cosmos db (1)',
#   'description': 'this is the first project to use cosmosDB',}
#
#   {'id': '1002',
#   'title': 'cosmos db (2)',
#   'description': 'this is the second project to use cosmosDB',}
#
#   {'id': '1003',
#   'title': 'cosmos db (3)',
#   'description': 'this is the third project to use cosmosDB',}
# ]

データベース・SQL操作まとめ

当サイトではデータベースの設計ノウハウやSQL操作における基本構文の解説記事を多数配信しています。合わせてご覧ください。

最後に

この記事が気に入ったら
フォローしてね!

目次