Verwenden von SQLAlchemy mit Azure Databricks
Azure Databricks bietet einen SQLAlchemy-Dialekt (das System SQLAlchemy verwendet diesen, um mit verschiedenen Arten von Datenbank-API-Implementierungen und Datenbanken zu kommunizieren) für Azure Databricks. SQLAlchemy ist ein Python SQL-Toolkit und Object Relational Mapper (ORM). SQLAlchemy bietet eine Reihe bekannter Persistenzmuster auf Unternehmensniveau, die für einen effizienten und leistungsstarken Datenbankzugriff entwickelt wurden, angepasst an eine einfache und pythonische Domänensprache. Siehe Funktionen und Philosophie.
Der SQLAlchemy-Dialekt für Azure Databricks ist im Databricks SQL-Connector für Python enthalten. In diesem Artikel wird der SQLAlchemy-Dialekt für Azure Databricks, Version 2.0, behandelt, für den der Databricks SQL-Connector für Python, Version 3.0.0 oder höher, erforderlich ist.
Anforderungen
- Ein Entwicklungscomputer mit Python >=3.8 und <=3.11.
- Databricks empfiehlt die Verwendung von virtuellen Python-Umgebungen, etwa denen, die von venv bereitgestellt werden und in Python enthalten sind. Mithilfe virtueller Umgebungen kann sichergestellt werden, dass Sie die richtigen Versionen von Python und des Databricks SQL-Connectors für Python zusammen verwenden. Einrichtung und Verwendung virtueller Umgebungen werden in diesem Artikel nicht behandelt. Weitere Informationen finden Sie unter Erstellen virtueller Umgebungen.
- Ein vorhandener Cluster oder vorhandenes SQL-Warehouse.
Erste Schritte
Installieren Sie den Databricks SQL-Connector für Python-Bibliothek, Version 3.0.0 oder höher, auf Ihrem Entwicklungscomputer, indem Sie
pip install "databricks-sql-connector[sqlalchemy]"
oderpython -m pip install "databricks-sql-connector[sqlalchemy]"
ausführen. Versionsinformationen finden Sie im Versionsverlauf von Databricks SQL-Connector.Sammeln Sie die folgenden Informationen über den Cluster oder das SQL-Warehouse, den oder das Sie verwenden möchten:
Cluster
- Den Serverhostnamen des Clusters. Diesen können Sie dem Wert Serverhostname auf der Registerkarte Erweiterte Optionen > JDBC/ODBC für Ihren Cluster entnehmen.
- Den HTTP-Pfad des Clusters. Diesen finden Sie im Wert HTTP-Pfad auf der Registerkarte Erweiterte Optionen > JDBC/ODBC für Ihren Cluster.
SQL-Warehouse
- Den Serverhostnamen des SQL-Warehouses. Sie finden diesen im Wert Serverhostname auf der Registerkarte Verbindungsdetails für Ihr SQL-Warehouse.
- Den HTTP-Pfad des SQL-Warehouses. Sie finden diesen im Wert HTTP-Pfad auf der Registerkarte Verbindungsdetails für Ihr SQL-Warehouse.
Authentifizierung
Der SQLAlchemy-Dialekt für Azure Databricks unterstützt die Authentifizierung mit persönlichen Zugriffstoken von Azure Databricks.
Führen Sie zum Erstellen eines persönlichen Azure Databricks-Zugriffstokens die Schritte in Azure Databricks persönliche Zugriffstoken für Arbeitsbereichsbenutzer aus.
Verwenden Sie den folgenden Codeschnipsel, um den SQLAlchemy-Dialekt zu authentifizieren. Bei diesem Codeschnipsel wird davon ausgegangen, dass Sie die folgenden Umgebungsvariablen festgelegt haben:
DATABRICKS_TOKEN
ist auf das persönliche Azure Databricks-Zugriffstoken festgelegt.DATABRICKS_SERVER_HOSTNAME
auf den Wert für den Server-Hostnamen Ihres Clusters oder SQL-Warehouses gesetzt.DATABRICKS_HTTP_PATH
ist auf den Wert von HTTP-Pfad für Ihren Cluster oder Ihr SQL-Warehouse festgelegt.DATABRICKS_CATALOG
, auf den Zielkatalog in Unity Catalog festgelegt.DATABRICKS_SCHEMA
, auf das Zielschema (auch Datenbank genannt) in Unity Catalog festgelegt.
Informationen zum Festlegen von Umgebungsvariablen finden Sie in der Dokumentation des Betriebssystems.
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}"
)
# ...
Sie verwenden die vorangehende engine
-Variable, um über Ihre Azure Databricks-Computeressource eine Verbindung mit Ihrem angegebenen Katalog und Schema herzustellen. Verbindungsbeispiele finden Sie im folgenden Abschnitt und in der Datei sqlalchemy.py in GitHub.
Beispiel
Siehe die Datei sqlalchemy.py in GitHub.
DBAPI-Referenz
- Siehe die Datei README.sqlalchemy.md in GitHub.
- Siehe auch das Quellcodeverzeichnis sqlalchemy in GitHub.