メインコンテンツまでスキップ

DatabricksでSQLAlchemyを使用する

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

Databricks で SQLAlchemy 機能を使用するには、Databricks の SQLAlchemy 言語をインストールする必要があります。 この記事では、Databricks SQL Connector for Python バージョン 4.0.0 以降に基づく Databricks バージョン 1.0 および 2.0 の SQLAlchemy 方言について説明します。

必要条件

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

はじめに

  • pip install databricks-sqlalchemy~=1.0 を使用して SQLAlchemy v1 に databricks-sqlalchemy をインストールするか、pip install databricks-sqlalchemyを使用して SQLAlchemy v2 をインストールします。バージョン情報については、 databricks-sqlalchemy のリリース履歴を参照してください。

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

認証

Databricks の SQLAlchemy 言語は、Databricks 個人用アクセス トークン認証をサポートしています。

Databricks個人用アクセス トークンを作成するには、「ワークスペース ユーザー用の個人用アクセス トークンDatabricks」の手順に従います。

SQLAlchemy ダイアレクトを認証するには、次のコードスニペットを使用します。 このスニペットは、次の環境変数を設定していることを前提としています。

  • DATABRICKS_TOKENで、Databricks 個人用アクセス トークンに設定されます。
  • DATABRICKS_SERVER_HOSTNAMEクラスターまたはウェアハウスの Server Hostname 値 SQLに設定します。
  • DATABRICKS_HTTP_PATHで、クラスターまたはSQL ウェアハウスの HTTP パス 値に設定します。
  • DATABRICKS_CATALOGで、Unity Catalog のターゲット カタログに設定します。
  • DATABRICKS_SCHEMAは、Unity Catalog のターゲット スキーマ (データベースとも呼ばれます) に設定されます。

環境変数を設定するには、ご利用になっているオペレーティングシステムのドキュメントを参照してください。

Python
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 変数を使用して、 Databricks コンピュート リソースを介して指定したカタログとスキーマに接続します。

SQLAlchemy v1 (英語)

接続例については、こちらを参照してください example.py

SQLAlchemy v2 (英語)

接続の例については、次のセクションと GitHub の sqlalchemy_example.py ファイルを参照してください。

DBAPI リファレンス

追加のリソース