Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Schnellstartanleitung verbinden Sie ein Python-Skript mit einer Datenbank, die Sie erstellt und mit Beispieldaten geladen haben. Sie verwenden den pyodbc Treiber für Python, um eine Verbindung mit Ihrer Datenbank herzustellen und grundlegende Vorgänge auszuführen, z. B. Lesen und Schreiben von Daten.
Pyodbc-Dokumentation | Pyodbc-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.
pyodbcPaket von PyPI.Eine Datenbank auf SQL Server, Azure SQL-Datenbank oder SQL-Datenbank in Fabric mit dem
AdventureWorks2025Beispielschema und einer gültigen Verbindungszeichenfolge.
Einrichten
Führen Sie die folgenden Schritte aus, um Ihre Entwicklungsumgebung so zu konfigurieren, dass eine Anwendung mit dem pyodbc 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. Eine zusätzliche Konfiguration ist nicht erforderlich.
Installieren des pyodbc-Pakets
Holen Sie sich das pyodbc-Paket von PyPI.
Öffnen Sie eine Eingabeaufforderung in einem leeren Verzeichnis.
Installieren Sie das
pyodbc-Paket.pip install pyodbc
Installieren des Python-dotenv-Pakets
Rufen Sie python-dotenv von PyPI ab.
Installieren Sie das Paket im selben
python-dotenvVerzeichnis.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.
Überprüfen Sie die Liste der installierten Pakete mit
pip list.pip list
Erstellen einer SQL-Datenbank
Für diese Schnellstartanleitung ist das AdventureWorks2025 Lightweight-Schema unter Microsoft SQL Server, SQL-Datenbank in Fabric oder Azure SQL-Datenbank erforderlich.
Erstellen Sie in wenigen Minuten eine SQL-Datenbank über das Azure-Portal
Kopieren Sie die ODBC Verbindungszeichenfolge von der Registerkarte "Verbindungszeichenfolgen ".
Ausführen des Codes
Neue Datei erstellen
Erstelle eine neue Datei mit dem Namen
app.py.Fügen Sie einen Modul-Docstring hinzu.
""" Connects to a SQL database using pyodbc """Importieren Sie das
pyodbcPaket.from os import getenv from dotenv import load_dotenv from pyodbc import connectVerwenden Sie die
pyodbc.connect-Funktion, um eine Verbindung zu einer SQL-Datenbank herzustellen.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))Erstellen Sie im aktuellen Verzeichnis eine neue Datei mit dem Namen
.env.Fügen Sie in der
.envDatei einen Eintrag für die Verbindungszeichenfolge mit dem NamenSQL_CONNECTION_STRINGhinzu. Ersetzen Sie das Beispiel hier durch Ihren tatsächlichen Verbindungszeichenfolgenwert.SQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Tipp
Die hier verwendete Verbindungszeichenfolge hängt weitgehend vom Typ der SQL-Datenbank ab, mit der Sie eine Verbindung herstellen. Wenn Sie eine Verbindung mit einer Azure SQL-Datenbank oder einer SQL-Datenbank in Fabric herstellen, verwenden Sie die ODBC-Verbindungszeichenfolge auf der Registerkarte "Verbindungszeichenfolgen". Möglicherweise müssen Sie den Authentifizierungstyp je nach Szenario anpassen. 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.
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; """Verwenden von
cursor.executezum Abrufen eines Resultsets aus einer Abfrage für die Datenbank.cursor = conn.cursor() 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.
Verwenden von
cursor.fetchallmit einemforeachLoop, um alle Datensätze aus der Datenbank abzurufen. Drucken Sie dann die Datensätze.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")Speichern Sie die
app.pyDatei.Öffnen Sie ein Terminal und testen Sie die Anwendung.
python app.pyDie 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 .
Fügen Sie am Anfang von
randrangeeinen Import fürrandomaus derapp.py-Bibliothek hinzu.from random import randrangeAm Ende von
app.pyfü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.
Erstellen Sie eine SQL-Anweisungszeichenfolge.
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) """Führen Sie die Anweisung mit
cursor.executeaus.cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )Fetchen Sie die erste Spalte des einzelnen Ergebnisses mit
cursor.fetchval, drucken Sie den eindeutigen Bezeichner des Ergebnisses, und committen Sie den Vorgang dann als Transaktion mitconnection.commit.resultId = cursor.fetchval() print(f"Inserted Product ID : {resultId}") conn.commit()Tipp
Optionalerweise können Sie
connection.rollbackverwenden, um die Transaktion rückgängig zu machen.Schließen Sie den Cursor und die Verbindung mithilfe von
cursor.closeundconnection.close.cursor.close() conn.close()Speichern Sie die
app.pyDatei, und testen Sie die Anwendung erneut.python app.pyDie erwartete Ausgabe sieht folgendermaßen aus.
Inserted Product ID : 1001
Nächster Schritt
Besuchen Sie das pyodbc GitHub-Treiberrepository für weitere Beispiele, um Ideen beizutragen oder Probleme zu melden.