Freigeben über


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

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

Pymssql-Dokumentation | Pymssql-Quellcode | Paket (PyPi)

Voraussetzungen

  • Python 3

    • Wenn Sie noch nicht über Python verfügen, installieren Sie den Python-Runtime – und Python Package Index (PyPI)-Paket-Manager aus python.org.

    • Bevorzugen Sie es, Ihre eigene Umgebung nicht zu verwenden? Öffnen Sie als Devcontainer mit GitHub Codespaces.

  • pymssql Paket von PyPI.

  • Eine Datenbank auf SQL Server, Azure SQL-Datenbank oder SQL-Datenbank in Fabric mit dem AdventureWorks2022 Beispielschema und einer gültigen Verbindungszeichenfolge.

Einrichten

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

Hinweis

Dieser Treiber verwendet das TDS-Protokoll , das standardmäßig in SQL Server, SQL-Datenbank in Fabric und Azure SQL-Datenbank aktiviert ist. Eine zusätzliche Konfiguration ist nicht erforderlich.

Installieren des pymssql-Pakets

Holen Sie sich das pymssql-Paket von PyPI.

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

  2. Installieren Sie das pymssql-Paket.

    pip install pymssql
    

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 einer SQL-Datenbank

Für diese Schnellstartanleitung ist das AdventureWorks2022 Lightweight-Schema unter Microsoft SQL Server, SQL-Datenbank in Fabric oder Azure SQL-Datenbank erforderlich.

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 pymssql
    """
    
  3. Pakete importieren, einschließlich pymssql.

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

    load_dotenv()
    conn = connect(getenv("SQL_SERVER"),getenv("SQL_USER"),getenv("SQL_PASSWORD"),getenv("SQL_DATABASE"))
    
  5. Erstellen Sie im aktuellen Verzeichnis eine neue Datei mit dem Namen *.env.

  6. Fügen Sie in der *.env Datei Einträge für Ihre Verbindungszeichenfolgenwerte namens SQL_SERVER, SQL_USER, , SQL_PASSWORDSQL_DATABASE. Ersetzen Sie die Platzhalter hier mit Ihren tatsächlichen Verbindungszeichenfolgenwerten.

    SQL_SERVER="<server_name>"
    SQL_USER="<sql_user_name>"
    SQL_PASSWORD="<sql_user_password>"
    SQL_DATABASE="<sql_database>"
    

    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 in der Referenz zur Verbindungszeichenfolgensyntax.

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(as_dict=True)
    cursor.execute(SQL_QUERY)
    

    Hinweis

    Diese Funktion akzeptiert praktisch jede Abfrage und gibt ein Resultset zurück, das mithilfe von cursor.fetchone() durchlaufen werden kann.

  3. Verwenden Sie eine foreach Schleife, um alle Datensätze aus der Datenbank abzurufen. Drucken Sie dann die Datensätze.

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

  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 fügen Sie Code hinzu, 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 (%s, %s, %s, %s, CURRENT_TIMESTAMP)
    """
    
  4. Führen Sie die Anweisung mit cursor.execute aus.

    cursor.execute(
        SQL_STATEMENT,
        (
            f'Example Product {productNumber}',
            f'EXAMPLE-{productNumber}',
            100,
            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

    Optional können Sie connection.rollback verwenden, um die Transaktion zurückzusetzen.

  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ächster Schritt

Besuchen Sie das pymssql GitHub-Treiberrepository für weitere Beispiele, um Ideen beizutragen oder Probleme zu melden.