Azure Databricks では、Azure Databricks 用の SQLAlchemy"方言" (SQLAlchemy がさまざまな種類のデータベース API 実装やデータベースと通信するために使用するシステム) が提供されます。 SQLAlchemy は、Python SQL ツールキットであり、オブジェクト リレーショナル マッパー (ORM) です。 SQLAlchemy は、効率的で高パフォーマンスのデータベース アクセス用に設計された、よく知られたエンタープライズ レベルの永続化パターンのスイートを、シンプルで Python らしいドメイン言語に適合させて提供します。 「特徴と哲学」を参照してください。
Azure Databricks で SQLAlchemy 機能を使用するには、Azure Databricks の SQLAlchemy 方言をインストールする必要があります。 この記事では、Databricks SQL Connector for Python バージョン 4.0.0 以降に基づく Azure Databricks バージョン 1.0 および 2.0 の SQLAlchemy 言語について説明します。
要件
- Python >=3.8、<=3.11 を実行している開発マシン。
- Databricks では、Python 仮想環境 (Python に含まれる venv によって提供されるものなど) を使用することをお勧めしています。 仮想環境は、正しいバージョンの Python と Databricks SQL Connector for Python を一緒に使用していることを確認するのに役立ちます。 仮想環境のセットアップと使用は、この記事の範囲外です。 詳細については、「仮想環境を作成する」を参照してください。
- 既存のクラスターまたは SQL ウェアハウス。
作業の開始
pip install databricks-sqlalchemy~=1.0
を使用して SQLAlchemy v1 用またはpip install databricks-sqlalchemy
を使用して SQLAlchemy v2 用に databricks-sqlalchemy をインストールします。 バージョン情報については、 databricks-sqlalchemy リリース履歴を参照してください。使用するクラスターまたは SQL ウェアハウスに関する次の情報を収集します。
クラスター
- クラスターのサーバー ホスト名。 これは、クラスターの タブにある > の値から取得できます。
- クラスターの HTTP パス。 これは、クラスターの タブにある > の値から取得できます。
SQL ウェアハウス
- SQL ウェアハウスのサーバー ホスト名。 これは、SQL ウェアハウスの [接続の詳細] タブにある [サーバー ホスト名] の値から取得できます。
- SQL ウェアハウスの HTTP パス。 これは、SQL ウェアハウスの [接続の詳細] タブにある [HTTP パス] の値から取得できます。
認証
Azure Databricks 用の SQLAlchemy 方言では、Azure Databricks 個人用アクセス トークン認証がサポートされています。
Azure Databricks 個人用アクセス トークンを作成するには、「ワークスペース ユーザーの Azure Databricks 個人用アクセス トークンの手順に従います。
SQLAlchemy 方言を認証するには、次のコード スニペットを使用します。 このスニペットでは、次の環境変数を設定していることを前提としています。
-
DATABRICKS_TOKEN
が、Azure Databricks 個人用アクセス トークンに設定されていること。 -
DATABRICKS_SERVER_HOSTNAME
が、クラスターまたは SQL ウェアハウスのサーバー ホスト名の値に設定されていること。 -
DATABRICKS_HTTP_PATH
が、クラスターまたは SQL ウェアハウスの HTTP パスの値に設定されていること。 -
DATABRICKS_CATALOG
: Unity Catalog のターゲット カタログに設定されます。 -
DATABRICKS_SCHEMA
: Unity Catalog のターゲット スキーマ (データベースとも呼ばれます) に設定されます。
環境変数を設定するには、オペレーティング システムのドキュメントを参照してください。
import os
from sqlalchemy import create_engine
access_token = os.getenv("DATABRICKS_TOKEN")
server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME")
http_path = os.getenv("DATABRICKS_HTTP_PATH")
catalog = os.getenv("DATABRICKS_CATALOG")
schema = os.getenv("DATABRICKS_SCHEMA")
engine = create_engine(
url = f"databricks://token:{access_token}@{server_hostname}?" +
f"http_path={http_path}&catalog={catalog}&schema={schema}"
)
# ...
上記の engine
変数を使用して、Azure Databricks コンピューティング リソースを介して指定したカタログとスキーマに接続します。
SQLAlchemy v1
接続例については、この example.py を参照してください。
SQLAlchemy v2
接続の例については、次のセクションと GitHub の sqlalchemy_example.py ファイルを参照してください。
DBAPI リファレンス
- databricks-sqlalchemy v1 GitHub リポジトリ
- SQLAlchemy v1 README.md
- databricks-sqlalchemy v2 GitHub リポジトリ
- SQLAlchemy v2 README.md