搭配 Azure Databricks 使用 SQLAlchemy
Azure Databricks 為 Azure Databricks 提供 SQLAlchemy方言 (SQLAlchemy 用來與各種類型的資料庫 API 實作和資料庫通訊的系統)。 SQLAlchemy 是 Python SQL 工具組和物件關聯式對應 (ORM)。 SQLAlchemy 提供一套知名的企業級持續性模式,專為高效且高效能的資料庫存取而設計,並改編成簡單的 Pythonic 網域語言。 請參閱功能和理念。
必須安裝 Azure Databricks 的 SQLAlchemy 方言,才能搭配 Azure Databricks 使用 SQLAlchemy 功能。 本文涵蓋 Azure Databricks 1.0 版和 2.0 版的 SQLAlchemy 方言,該方言將以適用於 Python 4.0.0 版或更新版本的 Databricks SQL Connector 為基礎。
需求
- 執行 Python >=3.8 和 <=3.11 的開發機器。
- Databricks 建議您使用 Python 虛擬環境,例如 Python 隨附的 venv 所提供的環境。 虛擬環境可協助您確保同時使用正確的 Python 版本和適用於 Python 的 Databricks SQL 連接器。 設定和使用虛擬環境不屬於本文的討論範圍。 如需詳細資訊,請參閱建立虛擬環境。
- 現有的叢集或 SQL 倉儲。
Get 已啟動
為 SQLAlchemy v1 安裝 databricks-sqlalchemy 使用
pip install databricks-sqlalchemy~=1.0
,或為 SQLAlchemy v2 使用pip install databricks-sqlalchemy
。 如需版本資訊,請參閱 databricks-sqlalchemy 版本歷史。針對想要使用的叢集或 SQL 倉儲,收集下列資訊:
Cluster
- 叢集的伺服器主機名稱。 您可以從叢集的 [進階選項] > [JDBC/ODBC] 索引卷標中的 [伺服器主機名] 值 get 此專案。
- 叢集的 HTTP 路徑。 您可以從叢集的 [進階選項] > [JDBC/ODBC] 索引卷標的 [HTTP 路徑] 值 get 此值。
SQL 倉儲
- SQL 倉儲的伺服器主機名稱。 您可以在 SQL 倉儲的 [連線詳細信息] 標籤中,使用 [伺服器主機名] 值來執行 get。
- SQL 倉儲的 HTTP 路徑。 您可以從 SQL 倉儲的 [連線詳細數據] 索引標籤中的 [HTTP 路徑] 值get 此值。
驗證
適用於 Azure Databricks 的 SQLAlchemy 方言支援 Azure Databricks 個人存取權杖驗證。
若要建立 Azure Databricks 個人存取令牌,請遵循適用於工作區使用者的 Azure Databricks 個人存取令牌中的步驟。
若要驗證 SQLAlchemy 方言,請使用下列程式碼片段。 此程式碼片段假設您已設定 set 下列環境變數:
-
DATABRICKS_TOKEN
,set 至 Azure Databricks 個人存取令牌。 - 請將
DATABRICKS_SERVER_HOSTNAME
set 指定給叢集或 SQL 倉儲的 伺服器主機名 值。 -
DATABRICKS_HTTP_PATH
, set 到 叢集或 SQL 倉儲的 HTTP 路徑 值。 -
DATABRICKS_CATALOG
,set 在 Unity Catalog中的目標 catalog。 -
DATABRICKS_SCHEMA
,set 到 Unity Catalog中的目標 schema(也稱為資料庫)。
若要 set 環境變數,請參閱作業系統的檔。
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 計算資源連線到指定的 catalog 並 schema。
SQLAlchemy v1
如需連線範例,請參閱此 example.py
SQLAlchemy v2
如需連線範例,請參閱下一節和 GitHub 中的 sqlalchemy_example.py 檔案。
DBAPI 參考
- gitHub 存放庫 databricks-sqlalchemy v1
- SQLAlchemy v1 README.md
- databricks-sqlalchemy v2 GitHub 儲存庫
- SQLAlchemy v2 README.md