次の方法で共有


Azure Databricks で SQLAlchemy を使用する

Azure Databricks では、Azure Databricks 用の SQLAlchemy "方言" (SQLAlchemy がさまざまな種類のデータベース API 実装やデータベースと通信するために使用するシステム) が提供されます。 SQLAlchemy は、Python SQL ツールキットであり、オブジェクト リレーショナル マッパー (ORM) です。 SQLAlchemy は、効率的で高パフォーマンスのデータベース アクセス用に設計された、よく知られたエンタープライズ レベルの永続化パターンのスイートを、シンプルで Python らしいドメイン言語に適合させて提供します。 「特徴と哲学」を参照してください。

Azure Databricks 用の SQLAlchemy 方言は、Databricks SQL Connector for Python に含まれています。 この記事では、Databricks SQL Connector for Python バージョン 3.0.0 以降が必要な Azure Databricks バージョン 2.0 用の SQLAlchemy 方言について説明します。

要件

  • Python >=3.8、<=3.11 を実行している開発マシン。
  • Databricks では、Python 仮想環境 (Python に含まれる venv によって提供されるものなど) を使用することをお勧めしています。 仮想環境は、正しいバージョンの Python と Databricks SQL Connector for Python を一緒に使用していることを確認するのに役立ちます。 仮想環境のセットアップと使用は、この記事の範囲外です。 詳細については、「仮想環境を作成する」を参照してください。
  • 既存のクラスターまたは SQL ウェアハウス

作業の開始

  • pip install "databricks-sql-connector[sqlalchemy]" または python -m pip install "databricks-sql-connector[sqlalchemy]" を実行して、Databricks SQL Connector for Python ライブラリ バージョン 3.0.0 以降を開発マシンにインストールします。 バージョン情報については、「databricks-sql-connector リリース履歴」を参照してください。

  • 使用するクラスターまたは SQL ウェアハウスに関する次の情報を収集します。

    クラスター

    • クラスターのサーバー ホスト名。 これは、クラスターの [詳細オプション]> [JDBC/ODBC] タブにある [サーバー ホスト名] の値から取得できます。
    • クラスターの HTTP パス。 これは、クラスターの [詳細オプション]> [JDBC/ODBC] タブにある [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 コンピューティング リソースを介して指定したカタログとスキーマに接続します。 接続の例については、次のセクションと GitHub の sqlalchemy.py ファイルを参照してください。

GitHub の sqlalchemy.py ファイルを参照してください。

DBAPI リファレンス

  • GitHub の README.sqlalchemy.md ファイルを参照してください。
  • GitHub の sqlalchemy ソース コード ディレクトリも参照してください。

その他のリソース