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 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
Python 3.10 oder höher
Wenn Sie noch nicht über Python verfügen, installieren Sie den Python-Runtime - und Pip-Paket-Manager aus python.org.
Möchten Sie nicht Ihre eigene Umgebung verwenden? Unter Container- und lokale Entwicklung erfahren Sie, wie Sie einen reproduzierbaren Devcontainer oder eine GitHub-Codespaces-Umgebung erstellen.
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.
Öffnen Sie eine Eingabeaufforderung in einem leeren Verzeichnis.
Installieren Sie das
mssql-python-Paket.
Installiere das python-dotenv-Paket
Hol dir das Paket python-dotenv von PyPI.
Installieren Sie das
python-dotenvPaket 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.
Überprüfen Sie die Liste der installierten Pakete mit
pip list.pip list
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 mssql-python """Pakete importieren, einschließlich
mssql-python.from os import getenv from dotenv import load_dotenv from mssql_python import connectVerwenden Sie die
mssql-python.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. 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
.enves 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.
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 im Wesentlichen jede Abfrage und liefert eine Ergebnismenge zurück. Um über die Ergebnismenge zu iterieren, verwenden Sie cursor.fetchone().
Verwenden von
cursor.fetchallmit einemforLoop, 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}")Speichern Sie die
app.pyDatei.Tipp
Unter macOS funktionieren sowohl
ActiveDirectoryInteractiveals auchActiveDirectoryDefaultfür die Microsoft Entra-Authentifizierung.ActiveDirectoryInteractivefordert 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 Sieaz loginausführen, und verwenden Sie dannActiveDirectoryDefault, das die zwischengespeicherten Anmeldeinformationen wiederverwendet.Ö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.pyCode 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.
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) """Führen Sie die Anweisung mit
cursor.executeaus.cursor.execute( SQL_STATEMENT, { 'name': f'Example Product {productNumber}', 'product_number': f'EXAMPLE-{productNumber}', 'standard_cost': 100, 'list_price': 200 } )Fetchen Sie das einzelne Ergebnis mit
cursor.fetchone, drucken Sie den eindeutigen Bezeichner des Ergebnisses, und committen Sie den Vorgang dann als Transaktion mitconnection.commit.result = cursor.fetchone() print(f"Inserted Product ID : {result.ProductID}") 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ä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.