Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten ansluter du ett Python-skript till en databas som du skapade och läste in med exempeldata. Du använder pyodbc drivrutinen för Python för att ansluta till databasen och utföra grundläggande åtgärder, till exempel att läsa och skriva data.
pyodbc-dokumentation | pyodbc-källkod | Paket (PyPi)
Förutsättningar
Python 3
Om du inte redan har Python installerar du Pakethanteraren python runtime och Python Package Index (PyPI) från python.org.
Föredrar du att inte använda din egen miljö? Öppna som en devcontainer med hjälp av GitHub Codespaces.
pyodbcpaket från PyPI.En databas på SQL Server, Azure SQL Database eller SQL Database i Fabric med
AdventureWorks2022exempelschemat och en giltig anslutningssträng.
Förbereda
Följ de här stegen för att konfigurera utvecklingsmiljön för att utveckla ett program med hjälp av Python-drivrutinen pyodbc .
Anmärkning
Den här drivrutinen använder TDS-protokollet (Tabular Data Stream), som är aktiverat som standard i SQL Server, SQL Database i Fabric och Azure SQL Database. Ingen extra konfiguration krävs.
Installera pyodbc-paketet
pyodbc Hämta paketet från PyPI.
Öppna en kommandotolk i en tom katalog.
Installera
pyodbc-paketet.pip install pyodbc
Installera python-dotenv-paket
Hämta python-dotenv från PyPI.
Installera paketet i
python-dotenvsamma katalog.pip install python-dotenv
Kontrollera installerade paket
Du kan använda kommandoradsverktyget PyPI för att kontrollera att dina avsedda paket är installerade.
Kontrollera listan över installerade paket med
pip list.pip list
Skapa en SQL-databas
Den här snabbstarten kräver AdventureWorks2022 Lightweight-schemat på Microsoft SQL Server, SQL Database i Fabric eller Azure SQL Database.
Skapa en SQL-databas på några minuter med hjälp av Azure-portalen
Kopiera anslutningssträngen ODBC från fliken Anslutningssträngar .
Kör koden
Skapa en ny fil
Skapa en ny fil med namnet
app.py.Lägg till modulens docstring.
""" Connects to a SQL database using pyodbc """Importera
pyodbc-paketet.from os import getenv from dotenv import load_dotenv from pyodbc import connectpyodbc.connectAnvänd funktionen för att ansluta till en SQL-databas.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))I den aktuella katalogen skapar du en ny fil med namnet
.env.I filen
.envlägger du till en post för din anslutningssträng med namnetSQL_CONNECTION_STRING. Ersätt exemplet här med det faktiska anslutningssträngsvärdet.SQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Tips/Råd
Anslutningssträngen som används här beror till stor del på vilken typ av SQL-databas du ansluter till. Om du ansluter till en Azure SQL Database eller en SQL-databas i Fabric använder du ODBC-anslutningssträngen från fliken Anslutningssträngar. Du kan behöva justera autentiseringstypen beroende på ditt scenario. Mer information om anslutningssträngar och deras syntax finns i referens för anslutningssträngssyntax.
Köra en fråga
Använd en SQL-frågesträng för att köra en fråga och parsa resultatet.
Skapa en variabel för SQL-frågesträngen.
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; """Använd
cursor.executeför att hämta en resultatuppsättning från en fråga mot databasen.cursor = conn.cursor() cursor.execute(SQL_QUERY)Anmärkning
Den här funktionen accepterar i princip alla frågor och returnerar en resultatuppsättning, som kan itereras över med hjälp av cursor.fetchone().
Använd
cursor.fetchallmed enforeachloop för att hämta alla poster från databasen. Skriv sedan ut posterna.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")Spara
app.pyfilen.Öppna en terminal och testa programmet.
python app.pyHär är de förväntade resultaten.
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
Infoga en rad som en transaktion
Kör en INSERT-instruktion på ett säkert sätt och skicka parametrar. Att skicka parametrar som värden skyddar ditt program från SQL-inmatningsattacker .
Lägg till en import för
randrangefrånrandombiblioteket överst iapp.py.from random import randrangeI slutet av
app.pylägg till kod för att generera ett slumpmässigt produktnummer.productNumber = randrange(1000)Tips/Råd
Om du genererar ett slumpmässigt produktnummer här kan du köra det här exemplet flera gånger.
Skapa en SQL-instruktionssträng.
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) """Kör instruktionen med
cursor.execute.cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )Hämta den första kolumnen i det enskilda resultatet med hjälp av
cursor.fetchval, skriv ut resultatets unika identifierare och checka sedan in åtgärden som en transaktion med .connection.commitresultId = cursor.fetchval() print(f"Inserted Product ID : {resultId}") conn.commit()Tips/Råd
Du kan också använda
connection.rollbackför att återställa transaktionen.Stäng markören och anslutningen med hjälp av
cursor.closeochconnection.close.cursor.close() conn.close()app.pyfilen och testa programmet igen.python app.pyHär är de förväntade resultaten.
Inserted Product ID : 1001
Nästa steg
pyodbc Besök GitHub-drivrutinslagringsplatsen för drivrutiner för fler exempel för att bidra med idéer eller rapportera problem.