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 pyodbc stuurprogramma voor Python om verbinding te maken met uw database en basisbewerkingen uit te voeren, zoals het lezen en schrijven van gegevens.
pyodbc-documentatie | pyodbc-broncode | Pakket (PyPi)
Vereiste voorwaarden
Python 3
Als u Python nog niet hebt, installeert u de Python-runtime en PyPI-pakketbeheer (Python Package Index) vanuit python.org.
Wilt u liever uw eigen omgeving niet gebruiken? Open als een devcontainer met GitHub Codespaces.
pyodbcpakket van PyPI.Een database op SQL Server, Azure SQL Database of SQL Database in Fabric met het
AdventureWorks2025voorbeeldschema en een geldige verbindingsreeks.
Installeren
Volg deze stappen om uw ontwikkelomgeving te configureren voor het ontwikkelen van een toepassing met behulp van het pyodbc Python-stuurprogramma.
Opmerking
Dit stuurprogramma maakt gebruik van het TDS-protocol (Tabular Data Stream), dat standaard is ingeschakeld in SQL Server, SQL Database in Fabric en Azure SQL Database. Er is geen extra configuratie vereist.
Het pyodbc-pakket installeren
Haal het pyodbc pakket op uit PyPI.
Open een opdrachtprompt in een lege map.
Installeer het
pyodbc-pakket.pip install pyodbc
Python-dotenv-pakket installeren
Haal de python-dotenv uit 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
Een SQL-database maken
Voor deze quickstart is het AdventureWorks2025 Lightweight-schema vereist, in Microsoft SQL Server, SQL Database in Fabric of Azure SQL Database.
Binnen enkele minuten een SQL-database maken met behulp van Azure Portal
Kopieer de ODBC verbindingsreeks van het tabblad Verbindingsreeksen.
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 pyodbc """Importeer het
pyodbc-pakket.from os import getenv from dotenv import load_dotenv from pyodbc import connectGebruik de
pyodbc.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. Vervang het voorbeeld hier door de werkelijke verbindingsreekswaarde.SQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Aanbeveling
De hier gebruikte verbindingsreeks is grotendeels afhankelijk van het type SQL-database waarmee u verbinding maakt. Als u verbinding maakt met een Azure SQL Database of een SQL-database in Fabric, gebruikt u de ODBC-verbindingsreeks op het tabblad Verbindingsreeksen. Mogelijk moet u het verificatietype aanpassen, afhankelijk van uw scenario. Zie de naslaginformatie over de syntaxis van de verbindingsreeks voor meer informatie over verbindingsreeksen en de bijbehorende syntaxis.
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 wezen elke query en retourneert een resultatenset, die kan worden gecureerd met het gebruik van cursor.fetchone().
Gebruik
cursor.fetchallmet eenforeachlus om alle records uit de database op te halen. Druk vervolgens 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.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 (?, ?, ?, ?, CURRENT_TIMESTAMP) """Voer de instructie uit met behulp van
cursor.execute.cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )Haal de eerste kolom van het enkelvoudige resultaat op met behulp van
cursor.fetchval, druk de unieke identificatie van het resultaat af en voer vervolgens de bewerking uit als een transactie met behulp vanconnection.commit.resultId = cursor.fetchval() print(f"Inserted Product ID : {resultId}") 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 stap
Ga naar de GitHub-opslagplaats van het pyodbc stuurprogramma voor meer voorbeelden, om ideeën bij te dragen of problemen te rapporteren.