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ウェアハウスに関する次の情報を収集します。
クラスターのサーバー・ホスト名。 これは、クラスターの Advanced Options > JDBC/ODBC タブの Server ホスト名 の値から取得できます。
クラスターの HTTP パス。 これは、クラスターの Advanced Options > JDBC/ODBCタブの HTTP パスの値から取得できます。
認証
Databricks の SQLAlchemy ダイアレクトでは、Databricks の個人用アクセストークン認証がサポートされています。
Databricks個人用アクセストークンを作成するには、「ワークスペース ユーザー向けの個人用アクセストークンDatabricks」の手順に従います。
SQLAlchemyダイアレクトを認証するには、次のコードスニペットを使用します。 このスニペットは、次の環境変数が設定されていることを前提としています。
DATABRICKS_TOKEN
を Databricks personal アクセストークンに設定します。DATABRICKS_SERVER_HOSTNAME
をクラスターまたは SQLウェアハウスの [Server Hostname ] の値に設定します。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
変数を使用して、 Databricks コンピュート リソースを介して指定したカタログとスキーマに接続します。
SQLAlchemy v1 (英語)
接続例については、こちらを参照してください example.py
SQLAlchemy v2 (英語)
接続の例については、次のセクションと GitHub の sqlalchemy_example.py ファイルを参照してください。
DBAPI リファレンス
Databricks - sqlalchemy v1 GitHubリポジトリ
Databricks - SQLALCHEMYのV2 GitHubリポジトリ