Dela via


Snabbstart: Använda Python för att fråga en databas i Azure SQL Database eller Azure SQL Managed Instance

gäller för:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

I den här snabbstarten använder du Python för att ansluta till Azure SQL Database, Azure SQL Managed Instance eller Synapse SQL Database och använder T-SQL-uttryck för att fråga efter data.

mssql-python-dokumentation | mssql-python-källkod | Paket (PyPI)

Förutsättningar

För att slutföra den här snabbstarten behöver du:

Förbereda

Följ de här stegen för att konfigurera utvecklingsmiljön för att utveckla ett program med hjälp av Python-drivrutinen mssql-python .

Anmärkning

Den här drivrutinen använder TDS-protokollet (Tabular Data Stream), som är aktiverat som standard i SQL Server, SQL Database i Fabric och Azure SQL Database. Ingen extra konfiguration krävs.

Installera mssql-python-paketet

mssql-python Hämta paketet från PyPI.

  1. Öppna en kommandotolk i en tom katalog.

  2. Installera paketet mssql-python.

    pip install mssql-python
    

Installera python-dotenv-paket

Hämta python-dotenv från PyPI.

  1. Installera paketet i python-dotenv samma katalog.

    pip install python-dotenv
    

Kontrollera installerade paket

Du kan använda kommandoradsverktyget PyPI för att kontrollera att dina avsedda paket är installerade.

  1. Kontrollera listan över installerade paket med pip list.

    pip list
    

Skapa nya filer

  1. I den aktuella katalogen skapar du en ny fil med namnet .env.

  2. I .env-filen lägger du till en post för din anslutningssträng med namnet SQL_CONNECTION_STRING. Ersätt platshållarna <database-server-name> och <database-name> med dina egna värden.

    Drivrutinen mssql-python har inbyggt stöd för Microsoft Entra-autentisering. Använd parametern Authentication för att ange autentiseringsmetoden.

    ActiveDirectoryDefault identifierar automatiskt autentiseringsuppgifter från flera källor utan att kräva interaktiv inloggning. Det här är det rekommenderade alternativet för lokal utveckling och fungerar i Windows, macOS och Linux.

    Logga in med Azure CLI först för att få den mest tillförlitliga lokala utvecklingsupplevelsen:

    az login
    

    Använd sedan det här anslutningssträngformatet i .env filen:

    SQL_CONNECTION_STRING="Server=<database-server-name>.database.windows.net;Database=<database-name>;Authentication=ActiveDirectoryDefault;Encrypt=yes;TrustServerCertificate=no"
    

    ActiveDirectoryDefault utvärderar autentiseringsuppgifter i följande ordning:

    1. Miljövariabler (för autentiseringsuppgifter för tjänstehuvudman)
    2. Hanterad identitet (när den körs i Azure)
    3. Azure CLI (från az login)
    4. Visual Studio (endast Windows)
    5. Azure PowerShell (från Connect-AzAccount)

    Tips/Råd

    För produktionsprogram använder du den specifika autentiseringsmetoden för ditt scenario för att undvika svarstid för identifiering av autentiseringsuppgifter:

    • Azure App Service/Functions: Använd ActiveDirectoryMSI (hanterad identitet)
    • Interaktiv användarinloggning: Använd ActiveDirectoryInteractive
    • Tjänstens huvudnamn: Använd ActiveDirectoryServicePrincipal

Tips/Råd

Anslutningssträngen som används här beror till stor del på vilken typ av SQL-databas du ansluter till. Mer information om anslutningssträngar och deras syntax finns i nyckelord och attribut för DSN och anslutningssträngar.

  1. Skapa en ny fil med namnet sqltest.py i en textredigerare.

  2. Lägg till följande kod.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
    load_dotenv()
    
    with connect(getenv("SQL_CONNECTION_STRING")) as conn:
        with conn.cursor() as cursor:
            cursor.execute("SELECT TOP 3 name, collation_name FROM sys.databases")
            rows = cursor.fetchall()
            for row in rows:
                print(row.name, row.collation_name)
    

Kör koden

  1. Kör följande kommando i en kommandotolk:

    python sqltest.py
    
  2. Kontrollera att databaserna och deras sorteringar returneras och stäng sedan kommandofönstret.

    Om du får ett fel:

    • Kontrollera att servernamnet, databasnamnet, användarnamnet och lösenordet som du använder är korrekta.

    • Om du kör koden från en lokal miljö kontrollerar du att brandväggen för den Azure-resurs som du försöker komma åt har konfigurerats för att tillåta åtkomst från din miljös IP-adress.