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 ingår i Databricks SQL-Anslut eller för Python. Den här artikeln beskriver SQLAlchemy-dialekten för Azure Databricks version 2.0, som kräver Databricks SQL Anslut eller för Python version 3.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-Anslut eller 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.

Kom igång

  • Installera Databricks SQL-Anslut eller för Python-bibliotek version 3.0.0 eller senare på utvecklingsdatorn genom att köra pip install "databricks-sql-connector[sqlalchemy]" eller python -m pip install "databricks-sql-connector[sqlalchemy]". Versionsinformation finns i versionshistoriken för databricks-sql-connector.

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

    Kluster

    Sql-lager

Autentisering

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

Gör följande för att skapa en personlig åtkomsttoken för Azure Databricks:

  1. I din Azure Databricks-arbetsyta klickar du på ditt Användarnamn för Azure Databricks i det övre fältet och väljer sedan Inställningar i listrutan.
  2. Klicka på Utvecklare.
  3. Bredvid Åtkomsttoken klickar du på Hantera.
  4. Klicka på Generera ny token.
  5. (Valfritt) Ange en kommentar som hjälper dig att identifiera den här token i framtiden och ändra tokens standardlivslängd på 90 dagar. Om du vill skapa en token utan livslängd (rekommenderas inte) lämnar du rutan Livslängd (dagar) tom (tom).
  6. Klicka på Generera.
  7. Kopiera den visade token till en säker plats och klicka sedan på Klar.

Kommentar

Se till att spara den kopierade token på en säker plats. Dela inte din kopierade token med andra. Om du förlorar den kopierade token kan du inte återskapa exakt samma token. I stället måste du upprepa den här proceduren för att skapa en ny token. Om du förlorar den kopierade token eller om du tror att token har komprometterats rekommenderar Databricks starkt att du omedelbart tar bort den token från arbetsytan genom att klicka på papperskorgsikonen (Återkalla) bredvid token på sidan Åtkomsttoken .

Om du inte kan skapa eller använda token på din arbetsyta kan det bero på att arbetsyteadministratören har inaktiverat token eller inte har gett dig behörighet att skapa eller använda token. Se din arbetsyteadministratör eller följande:

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_TOKEN, inställt på den personliga åtkomsttoken för Azure Databricks.
  • DATABRICKS_SERVER_HOSTNAMEange värdet servervärdnamn för klustret eller SQL-lagret.
  • DATABRICKS_HTTP_PATHanger du till HTTP-sökvägsvärde för klustret eller SQL-lagret.
  • DATABRICKS_CATALOG, inställt på målkatalogen i Unity Catalog.
  • DATABRICKS_SCHEMA, inställt på 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. Anslutningsexempel finns i följande avsnitt och filen sqlalchemy.py i GitHub.

Exempel

Se filen sqlalchemy.py i GitHub.

DBAPI-referens

Ytterligare resurser