Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart verbindt u een Python-script met een database die u hebt gemaakt en geladen met voorbeeldgegevens. U gebruikt het mssql-python stuurprogramma voor Python om verbinding te maken met uw database en basisbewerkingen uit te voeren, zoals het lezen en schrijven van gegevens.
Het mssql-python stuurprogramma vereist geen externe afhankelijkheden op Windows-computers. Het stuurprogramma installeert alles wat het nodig heeft met één pip installatie, zodat u de nieuwste versie van het stuurprogramma voor nieuwe scripts kunt gebruiken zonder dat andere scripts die u niet hoeft te upgraden en te testen, worden onderbroken.
Gebruik het lokale SQL-authenticatievoorbeeld in dit artikel alleen voor lokale ontwikkeling tegen een SQL Server-instantie die jij beheert. Voor Azure SQL Database, SQL-database in Fabric, gedeelde ontwikkelomgevingen, CI en productie-implementaties, begin je met Microsoft Entra-authenticatie of een andere wachtwoordloze flow.
documentatie | mssql-python-broncode | Pakket (PyPI) | Visual Studio Code
Vereiste voorwaarden
Python 3.10 of hoger
Als u Nog geen Python hebt, installeert u de Python-runtime en pip-pakketbeheer vanuit python.org.
Wilt u niet uw eigen omgeving gebruiken? Volg Container- en lokale ontwikkeling om een reproduceerbare devcontainer of GitHub Codespaces-omgeving te creëren.
Maak een database aan of maak verbinding met een database op SQL Server, Azure SQL Database of SQL-database in Fabric. Gebruik de volgende stappen om een database op te zetten met het AdventureWorks2025 voorbeeldschema en bewaar de verbindingsreeks voor later.
Een SQL-database maken
Maak een SQL-database aan of maak verbinding met een van de volgende platforms:
Configuratie
Volg deze stappen om uw ontwikkelomgeving te configureren voor het ontwikkelen van een toepassing met behulp van het mssql-python Python-stuurprogramma.
Opmerking
Deze driver gebruikt het Tabular Data Stream (TDS) protocol. SQL Server, SQL-database in Fabric en Azure SQL Database schakelen TDS standaard in, dus er is geen extra configuratie nodig.
Het mssql-python-pakket installeren
Haal het mssql-python pakket op uit PyPI.
Open een opdrachtprompt in een lege map.
Installeer het
mssql-python-pakket.
Installeer het python-dotenv-pakket
Haal het python-dotenv pakket van PyPI.
Installeer het
python-dotenvpakket in dezelfde map.pip install python-dotenv
Geïnstalleerde pakketten controleren
U kunt het opdrachtregelprogramma PyPI gebruiken om te controleren of de beoogde pakketten zijn geïnstalleerd.
Controleer de lijst met geïnstalleerde pakketten met
pip list.pip list
De code uitvoeren
Een nieuw bestand maken
Maak een nieuw bestand met de naam
app.py.Voeg een module-docstring toe.
""" Connects to a SQL database using mssql-python """Importeer pakketten, waaronder
mssql-python.from os import getenv from dotenv import load_dotenv from mssql_python import connectGebruik de
mssql-python.connectfunctie om verbinding te maken met een SQL-database.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))Maak in de huidige map een nieuw bestand met de naam
.env.Voeg in het
.envbestand een vermelding toe voor de verbindingsreeks met de naamSQL_CONNECTION_STRING. Gebruik een van de volgende voorbeelden en vervang de tijdelijke aanduidingen door je werkelijke waarden.Voor Azure SQL Database of SQL database in Fabric, begin met Microsoft Entra-authenticatie:
SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Voor lokale SQL Server tijdens ontwikkeling, begin met SQL-authenticatie:
SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database_name>;UID=<username>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"Waarschuwing
Behandel
.envhet als een lokale ontwikkelingsgemak, niet als een implementatiemechanisme. Nooit committen, nooit deze SQL-authenticatievoorbeeld hergebruiken in gedeelde of productieomgevingen, en houd certificaatvalidatie ingeschakeld buiten lokale ontwikkeling.Gebruik Connection-strings om de sample aan te passen voor benoemde instanties, containers of geavanceerde instellingen. Als je verbinding maakt met Azure SQL Database of SQL Database in Fabric, gebruik dan Microsoft Entra-authenticatie voor wachtwoordloze en interactieve aanmeldopties. Voor bredere richtlijnen voor geheime en certificaten, zie Security best practices.
Een query uitvoeren
Gebruik een SQL-queryreeks om een query uit te voeren en de resultaten te parseren.
Maak een variabele voor de SQL-queryreeks.
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; """Met
cursor.executehaalt u een resultatenset op uit een query tegen de database.cursor = conn.cursor() cursor.execute(SQL_QUERY)Opmerking
Deze functie accepteert in feite elke query en geeft een resultaatset terug. Om over de resultaatset te itereren, gebruik cursor.fetchone().
Gebruik
cursor.fetchallmet eenforlus om alle records uit de database op te halen. Druk daarna de records af.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")Sla het
app.pybestand op.Aanbeveling
In macOS werken beide
ActiveDirectoryInteractiveenActiveDirectoryDefaultvoor Microsoft Entra-verificatie.ActiveDirectoryInteractiveu wordt gevraagd u aan te melden telkens wanneer u het script uitvoert. Om herhaalde aanmeldingsprompts te voorkomen, meld je je één keer aan via de Azure CLI dooraz loginuit te voeren en gebruik vervolgensActiveDirectoryDefault, waarmee de in de cache opgeslagen referentiegegevens opnieuw worden gebruikt.Open een terminal en test de toepassing.
python app.pyDit is het verwachte resultaat.
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
Een rij invoegen als transactie
Voer een INSERT instructie veilig uit en geef parameters door. Parameters doorgeven als waarden beschermen uw toepassing tegen SQL-injectieaanvallen .
Voeg een import voor
randrangeuit derandom-bibliotheek toe aan de bovenkant vanapp.py.from random import randrangeAan het einde van
app.pycode toevoegen om een willekeurig productnummer te genereren.productNumber = randrange(1000)Aanbeveling
Als u hier een willekeurig productnummer genereert, zorgt u ervoor dat u dit voorbeeld meerdere keren kunt uitvoeren.
Maak een SQL-instructietekenreeks.
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) """Voer de instructie uit met behulp van
cursor.execute.cursor.execute( SQL_STATEMENT, { 'name': f'Example Product {productNumber}', 'product_number': f'EXAMPLE-{productNumber}', 'standard_cost': 100, 'list_price': 200 } )Haal het enkelvoudige resultaat op met behulp van
cursor.fetchone, druk de unieke id van het resultaat af en voer vervolgens de bewerking door als een transactie met behulp vanconnection.commit.result = cursor.fetchone() print(f"Inserted Product ID : {result.ProductID}") conn.commit()Aanbeveling
Indien nodig, kunt u de
connection.rollbacktransactie terugdraaien.Sluit de cursor en verbinding met
cursor.closeenconnection.close.cursor.close() conn.close()Sla het
app.pybestand op en test de toepassing opnieuw.python app.pyDit is het verwachte resultaat.
Inserted Product ID : 1001
Volgende stappen
Gebruik deze artikelen om verder te bouwen:
- Verbindingsstrings om het voorbeeld aan te passen voor lokale SQL Server, Azure SQL, containers en benoemde instanties.
- Verbindingsbeheer om contextbeheerders, pooling en verbindingsinstellingen te gebruiken.
- Probleemoplossing om authenticatie-, certificaat- en connectiviteitsproblemen te diagnosticeren.