Dela via


Använda SQLAlchemy med Azure Databricks

Azure Databricks tillhandahåller en SQLAlchemy-dialekt(systemet SQLAlchemy använder för att kommunicera med olika typer av implementeringar och databaser för databas-API:et) för Azure Databricks. SQLAlchemy är en Python SQL-verktygslåda och Object Relational Mapper (ORM). SQLAlchemy tillhandahåller en uppsättning välkända beständighetsmönster på företagsnivå, utformade för effektiv och högpresterande databasåtkomst, anpassad till ett enkelt och Python-domänspråk. Se Funktioner och filosofi.

SQLAlchemy-dialekten för Azure Databricks måste installeras för att använda SQLAlchemy-funktionerna med Azure Databricks. Den här artikeln beskriver SQLAlchemy-dialekten för Azure Databricks version 1.0 och 2.0, som baseras på Databricks SQL Connector för Python version 4.0.0 eller senare.

Krav

  • En utvecklingsdator som kör Python >=3.8 och <=3.11.
  • Databricks rekommenderar att du använder virtuella Python-miljöer, till exempel de som tillhandahålls av venv som ingår i Python. Virtuella miljöer hjälper dig att se till att du använder rätt versioner av Python och Databricks SQL Connector för Python tillsammans. Att konfigurera och använda virtuella miljöer ligger utanför omfånget för den här artikeln. Mer information finns i Skapa virtuella miljöer.
  • Ett befintligt kluster eller SQL-lager.

Sätta igång

  • Installera databricks-sqlalchemy för SQLAlchemy v1 med hjälp av pip install databricks-sqlalchemy~=1.0 eller för SQLAlchemy v2 med hjälp av pip install databricks-sqlalchemy. Versionsinformation finns i versionshistoriken för databricks-sqlalchemy.

  • Samla in följande information för det kluster eller SQL-lager som du vill använda:

    Kluster

    • Servervärdnamnet för klustret. Du kan hämta detta från värdet Server Hostname i fliken Avancerade alternativ > JDBC/ODBC för klustret.
    • HTTP-sökvägen för klustret. Du kan hämta detta från -värdet för HTTP-sökväg i fliken Avancerade alternativJDBC/ODBC > för ditt kluster.

    SQL-lager

    • Servervärdnamnet för SQL-lagret. Du kan hämta detta från värdet Server Hostname på fliken Anslutningsinformation för DITT SQL-lager.
    • HTTP-sökvägen för SQL-lagret. Du kan hämta detta från HTTP Path-värdet på fliken Anslutningsinformation för ditt SQL-lager.

Autentisering

SQLAlchemy-dialekten för Azure Databricks stöder personlig åtkomsttokenautentisering i Azure Databricks.

Om du vill skapa en personlig åtkomsttoken för Azure Databricks följer du stegen i Personliga åtkomsttoken för Azure Databricks för arbetsyteanvändare.

Om du vill autentisera SQLAlchemy-dialekten använder du följande kodfragment. Det här kodfragmentet förutsätter att du har angett följande miljövariabler:

  • DATABRICKS_TOKENställs in på en personlig åtkomsttoken för Azure Databricks.
  • DATABRICKS_SERVER_HOSTNAMEställs in på värdet Server Hostname för din kluster eller SQL-datalager.
  • DATABRICKS_HTTP_PATHanger du till HTTP-sökväg värde för klustret eller SQL-lagret.
  • DATABRICKS_CATALOGanger du till målkatalogen i Unity Catalog.
  • Ange DATABRICKS_SCHEMAtill målschemat (även kallat en databas) i Unity Catalog.

Information om hur du anger miljövariabler finns i dokumentationen till operativsystemet.

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}"
)

# ...

Du använder föregående engine variabel för att ansluta till den angivna katalogen och schemat via din Azure Databricks-beräkningsresurs.

SQLAlchemy v1

Anslutningsexempel finns i den här example.py

SQLAlchemy v2

Anslutningsexempel finns i följande avsnitt och filen sqlalchemy_example.py i GitHub.

DBAPI-referens

Ytterligare resurser