Schnellstart: Herstellen einer Verbindung mit dem mssql-python-Treiber für Python

In dieser Schnellstartanleitung verbinden Sie ein Python-Skript mit einer Datenbank, die Sie erstellt und mit Beispieldaten geladen haben. Sie verwenden den mssql-python Treiber für Python, um eine Verbindung mit Ihrer Datenbank herzustellen und grundlegende Vorgänge auszuführen, z. B. Lesen und Schreiben von Daten.

Der mssql-python Treiber erfordert keine externen Abhängigkeiten von Windows-Computern. Der Treiber installiert alles, was er mit einer einzigen pip Installation benötigt, sodass Sie die neueste Version des Treibers für neue Skripts verwenden können, ohne andere Skripts zu unterbrechen, die Sie nicht zum Upgrade und Test benötigen.

Verwenden Sie das Beispiel der lokalen SQL-Authentifizierung in diesem Artikel nur für lokale Entwicklung gegen eine von Ihnen kontrollierte SQL Server-Instanz. Für Azure SQL-Datenbank, SQL-Datenbanken in Fabric, gemeinsame Entwicklungsumgebungen, CI und Produktionsbereitstellungen beginnen Sie mit Microsoft Entra-Authentifizierung oder einem anderen passwortlosen Flow.

mssql-python-Dokumentation | mssql-python-Quellcode | Paket (PyPI) | Visual Studio Code

Voraussetzungen

Erstelle oder verbinde dich mit einer Datenbank auf SQL Server, Azure SQL-Datenbank oder SQL-Datenbank in Fabric. Verwenden Sie die folgenden Schritte, um eine Datenbank mit dem AdventureWorks2025 Beispielschema einzurichten und die Verbindungszeichenfolge für später aufzubewahren.

Erstellen einer SQL-Datenbank

Erstellen oder verbinden Sie sich mit einer SQL-Datenbank auf einer der folgenden Plattformen:

Konfiguration

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 Tabular Data Stream (TDS)- Protokoll. SQL Server, SQL-Datenbank in Fabric und Azure SQL-Datenbank aktivieren standardmäßig TDS, sodass keine zusätzliche Konfiguration erforderlich ist.

Installieren des mssql-python-Pakets

Holen Sie sich 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
    

Installiere das python-dotenv-Paket

Hol dir das Paket python-dotenv von PyPI.

  1. Installieren Sie das python-dotenv Paket im selben 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
    

Ausführen des Codes

Neue Datei erstellen

  1. Erstelle eine neue Datei mit dem Namen app.py.

  2. Fügen Sie einen Modul-Docstring hinzu.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. Pakete importieren, einschließlich mssql-python.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. Verwenden Sie die mssql-python.connect-Funktion, um eine Verbindung zu einer SQL-Datenbank herzustellen.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. Erstellen Sie im aktuellen Verzeichnis eine neue Datei mit dem Namen .env.

  6. Fügen Sie in der .env Datei einen Eintrag für die Verbindungszeichenfolge mit dem Namen SQL_CONNECTION_STRINGhinzu. Verwenden Sie eines der folgenden Beispiele und ersetzen Sie die Platzhalter durch Ihre tatsächlichen Werte.

    Für Azure SQL-Datenbank oder SQL-Datenbank in Fabric beginnen Sie mit der Microsoft Entra-Authentifizierung:

    SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
    

    Für lokalen SQL Server während der Entwicklung beginnen Sie mit SQL-Authentifizierung:

    SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database_name>;UID=<username>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"
    

    Caution

    Behandle .env es als lokalen Entwicklungskomfort, nicht als Bereitstellungsmechanismus. Nehmen Sie es niemals in einen Commit auf, verwenden Sie dieses SQL-Authentifizierungsbeispiel niemals in gemeinsam genutzten oder Produktionsumgebungen, und lassen Sie die Zertifikatsvalidierung außerhalb der lokalen Entwicklung aktiviert.

    Verwenden Sie Connection-Strings, um das Sample für benannte Instanzen, Container oder erweiterte Einstellungen anzupassen. Wenn du dich mit Azure SQL-Datenbank oder SQL Database in Fabric verbindest, nutze Microsoft Entra-Authentifizierung für passwortlose und interaktive Anmeldeoptionen. Für umfassendere Leitlinien zu Geheimnissen und Zertifikaten siehe Security Best Practices.

Ausführen einer Abfrage

Verwenden Sie eine SQL-Abfragezeichenfolge, um eine Abfrage auszuführen und die Ergebnisse zu analysieren.

  1. Erstellen Sie eine neue Variable für die SQL-Abfragenzeichenfolge.

    SQL_QUERY = """
    SELECT
    TOP 5 c.CustomerID,
    c.CompanyName,
    COUNT(soh.SalesOrderID) AS OrderCount
    FROM
    SalesLT.Customer AS c
    LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID
    GROUP BY
    c.CustomerID,
    c.CompanyName
    ORDER BY
    OrderCount DESC;
    """
    
  2. Verwenden von cursor.execute zum Abrufen eines Resultsets aus einer Abfrage für die Datenbank.

    cursor = conn.cursor()
    cursor.execute(SQL_QUERY)
    

    Hinweis

    Diese Funktion akzeptiert im Wesentlichen jede Abfrage und liefert eine Ergebnismenge zurück. Um über die Ergebnismenge zu iterieren, verwenden Sie cursor.fetchone().

  3. Verwenden von cursor.fetchall mit einem for Loop, um alle Datensätze aus der Datenbank abzurufen. Dann drucken Sie die Unterlagen aus.

    records = cursor.fetchall()
    for r in records:
      print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")
    
  4. Speichern Sie die app.py Datei.

    Tipp

    Unter macOS funktionieren sowohl ActiveDirectoryInteractive als auch ActiveDirectoryDefault für die Microsoft Entra-Authentifizierung. ActiveDirectoryInteractive fordert Sie auf, sich jedes Mal anzumelden, wenn Sie das Skript ausführen. Um wiederholte Anmeldeaufforderungen zu vermeiden, melden Sie sich einmal über die Azure CLI an, indem Sie az login ausführen, und verwenden Sie dann ActiveDirectoryDefault, das die zwischengespeicherten Anmeldeinformationen wiederverwendet.

  5. Öffnen Sie ein Terminal und testen Sie die Anwendung.

    python app.py
    

    Die erwartete Ausgabe sieht folgendermaßen aus.

    29485   1       Professional Sales and Service
    29531   1       Remarkable Bike Store
    29546   1       Bulk Discount Store
    29568   1       Coalition Bike Company
    29584   1       Futuristic Bikes
    

Einfügen einer Zeile als Transaktion

Führen Sie eine INSERT Anweisung sicher aus und übergeben Sie Parameter. Das Übergeben von Parametern als Werte schützt Ihre Anwendung vor SQL-Einfügungsangriffen .

  1. Fügen Sie am Anfang von randrange einen Import für random aus der app.py-Bibliothek hinzu.

    from random import randrange
    
  2. Am Ende von app.py Code einfügen, um eine zufällige Produktnummer zu generieren.

    productNumber = randrange(1000)
    

    Tipp

    Durch die Generierung einer zufälligen Produktnummer wird sichergestellt, dass Sie dieses Beispiel mehrmals ausführen können.

  3. Erstellen Sie eine SQL-Anweisungszeichenfolge.

    SQL_STATEMENT = """
    INSERT SalesLT.Product (
    Name,
    ProductNumber,
    StandardCost,
    ListPrice,
    SellStartDate
    ) OUTPUT INSERTED.ProductID
    VALUES (%(name)s, %(product_number)s, %(standard_cost)s, %(list_price)s, CURRENT_TIMESTAMP)
    """
    
  4. Führen Sie die Anweisung mit cursor.execute aus.

    cursor.execute(
       SQL_STATEMENT,
       {
          'name': f'Example Product {productNumber}',
          'product_number': f'EXAMPLE-{productNumber}',
          'standard_cost': 100,
          'list_price': 200
       }
    )
    
  5. Fetchen Sie das einzelne Ergebnis mit cursor.fetchone, drucken Sie den eindeutigen Bezeichner des Ergebnisses, und committen Sie den Vorgang dann als Transaktion mit connection.commit.

    result = cursor.fetchone()
    print(f"Inserted Product ID : {result.ProductID}")
    conn.commit()
    

    Tipp

    Optionalerweise können Sie connection.rollback verwenden, um die Transaktion rückgängig zu machen.

  6. Schließen Sie den Cursor und die Verbindung mithilfe von cursor.close und connection.close.

    cursor.close()
    conn.close()
    
  7. Speichern Sie die app.py Datei, und testen Sie die Anwendung erneut.

    python app.py
    

    Die erwartete Ausgabe sieht folgendermaßen aus.

    Inserted Product ID : 1001
    

Nächste Schritte

Nutzen Sie diese Artikel, um weiter aufzubauen:

  • Verbindungszeichenketten, um das Beispiel für lokalen SQL Server, Azure SQL, Container und benannte Instanzen anzupassen.
  • Verbindungsverwaltung , um Kontextmanager, Pooling und Verbindungseinstellungen zu verwenden.
  • Fehlerbehebung zur Diagnose von Authentifizierungs-, Zertifikats- und Verbindungsproblemen.