Freigeben über


Schnellstart: Abfragen einer Datenbank in Azure SQL-Datenbank oder Azure SQL Managed Instance mithilfe von Python

Gilt für:Azure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse Analytics

In dieser Schnellstartanleitung stellen Sie mithilfe von Python eine Verbindung mit Azure SQL-Datenbank, Azure SQL Managed Instance oder einer Synapse SQL-Datenbank her und fragen Daten mithilfe von T-SQL-Anweisungen ab.

mssql-python-Dokumentation | mssql-python-Quellcode | Paket (PyPI)

Voraussetzungen

Für die Durchführung dieses Schnellstarts benötigen Sie Folgendes:

Einrichten

Führen Sie die folgenden Schritte aus, um Ihre Entwicklungsumgebung so zu konfigurieren, dass eine Anwendung mit dem mssql-python Python-Treiber entwickelt wird.

Hinweis

Dieser Treiber verwendet das TDS-Protokoll (Tabular Data Stream ), das standardmäßig in SQL Server, SQL-Datenbank in Fabric und Azure SQL-Datenbank aktiviert ist. Es ist keine zusätzliche Konfiguration erforderlich.

Installieren des mssql-python-Pakets

Holen Sie das mssql-python Paket von PyPI.

  1. Öffnen Sie eine Eingabeaufforderung in einem leeren Verzeichnis.

  2. Installieren Sie das mssql-python-Paket.

    pip install mssql-python
    

Installieren des Python-dotenv-Pakets

Holen Sie sich die python-dotenv von PyPI.

  1. Installieren Sie das Paket im selben python-dotenv Verzeichnis.

    pip install python-dotenv
    

Installierte Pakete prüfen

Sie können das Befehlszeilentool PyPI verwenden, um zu überprüfen, ob Ihre vorgesehenen Pakete installiert sind.

  1. Überprüfen Sie die Liste der installierten Pakete mit pip list.

    pip list
    

Erstellen neuer Dateien

  1. Erstellen Sie im aktuellen Verzeichnis eine neue Datei mit dem Namen .env.

  2. Fügen Sie in der .env Datei einen Eintrag für die Verbindungszeichenfolge mit dem Namen SQL_CONNECTION_STRINGhinzu. Ersetzen Sie die Platzhalter <database-server-name> und <database-name> durch Ihre eigenen Werte.

    Der mssql-python-Treiber verfügt über integrierte Unterstützung für die Microsoft Entra-Authentifizierung. Verwenden Sie den Authentication Parameter, um die Authentifizierungsmethode anzugeben.

    ActiveDirectoryDefault erkennt automatisch Anmeldeinformationen aus mehreren Quellen, ohne dass eine interaktive Anmeldung erforderlich ist. Dies ist die empfohlene Option für die lokale Entwicklung und funktioniert unter Windows, macOS und Linux.

    Melden Sie sich zuerst bei Azure CLI an, um die zuverlässigste lokale Entwicklungsumgebung zu erhalten:

    az login
    

    Verwenden Sie dann dieses Verbindungszeichenfolgenformat in Ihrer .env Datei:

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

    ActiveDirectoryDefault Bewertet Anmeldeinformationen in der folgenden Reihenfolge:

    1. Umgebungsvariablen (für Dienstprinzipalanmeldeinformationen)
    2. Verwaltete Identität (bei Ausführung in Azure)
    3. Azure CLI (von az login)
    4. Visual Studio (nur Windows)
    5. Azure PowerShell (von Connect-AzAccount)

    Tipp

    Verwenden Sie für Produktionsanwendungen die spezifische Authentifizierungsmethode für Ihr Szenario, um die Latenz bei der Erkennung von Anmeldeinformationen zu vermeiden:

    • Azure App Service/Functions: Verwenden ActiveDirectoryMSI (verwaltete Identität)
    • Interaktive Benutzeranmeldung: Verwenden ActiveDirectoryInteractive
    • Service Principal: Verwenden ActiveDirectoryServicePrincipal

Tipp

Die hier verwendete Verbindungszeichenfolge hängt weitgehend vom Typ der SQL-Datenbank ab, mit der Sie eine Verbindung herstellen. Weitere Informationen zu Verbindungszeichenfolgen und deren Syntax finden Sie unter DSN- und Verbindungszeichenfolgenstichwörter und -attribute.

  1. Erstellen Sie in einem Text-Editor eine neue Datei namens sqltest.py.

  2. Fügen Sie den folgenden Code hinzu.

    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)
    

Ausführen des Codes

  1. Führen Sie an der Eingabeaufforderung folgenden Befehl aus:

    python sqltest.py
    
  2. Vergewissern Sie sich, dass die Datenbanken und die zugehörigen Sortierungen zurückgegeben werden, und schließen Sie dann das Befehlsfenster.

    Wenn eine Fehlermeldung angezeigt wird:

    • Stellen Sie sicher, dass der Servername, der Datenbankname, der Benutzername und das Kennwort, die Sie verwenden, richtig sind.

    • Wenn Sie den Code aus einer lokalen Umgebung ausführen, vergewissern Sie sich, dass die Firewall der Azure-Ressource, auf die Sie zugreifen möchten, so konfiguriert ist, dass der Zugriff über die IP-Adresse Ihrer Umgebung zugelassen wird.