Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a rövid útmutatóban egy Python-szkriptet csatlakoztat egy adatbázishoz, amelyet ön hozott létre és töltött be mintaadatokkal. A Python illesztőprogramját pyodbc használva csatlakozhat az adatbázishoz, és alapvető műveleteket hajthat végre, például az adatok olvasását és írását.
pyodbc dokumentációja | pyodbc-forráskód | Csomag (PyPi)
Előfeltételek
Python 3
Ha még nem rendelkezik Pythonnal, telepítse a Python futtatókörnyezetet és a Python-csomagindexet (PyPI) csomagkezelőtpython.org.
Nem szeretné a saját környezetét használni? Nyissa meg devcontainerként a GitHub Codespaces használatával.
pyodbccsomag a PyPI-ból.Sql Serveren, Azure SQL Database-en vagy SQL Database-adatbázison a Fabricben a
AdventureWorks2025mintasémával és egy érvényes kapcsolati sztringgel.
Előkészítés
Ezeket a lépéseket követve konfigurálhatja a fejlesztési környezetet egy alkalmazás Python-illesztőprogram használatával pyodbc történő fejlesztéséhez.
Megjegyzés:
Ez az illesztőprogram a Tabular Data Stream (TDS) protokollt használja, amely alapértelmezés szerint engedélyezve van az SQL Serverben, az SQL Database-ben a Fabricben és az Azure SQL Database-ben. Nincs szükség további konfigurációra.
A pyodbc-csomag telepítése
Szerezze be a pyodbc csomagot a PyPI-ból.
Nyisson meg egy parancssort egy üres könyvtárban.
Telepítse az
pyodbccsomagot.pip install pyodbc
Python-dotenv-csomag telepítése
Szerezze be a python-dotenv a PyPI-ról.
Ugyanabban a könyvtárban telepítse a
python-dotenvcsomagot.pip install python-dotenv
Telepített csomagok ellenőrzése
A PyPI parancssori eszközével ellenőrizheti, hogy a tervezett csomagok telepítve vannak-e.
Ellenőrizze a telepített csomagok listáját a következővel
pip list: .pip list
SQL-adatbázis létrehozása
Ehhez a gyorsindítási útmutatóhoz az AdventureWorks2025 Lightweight sémára van szükség a Microsoft SQL Serveren, a Fabric SQL-adatbázisban vagy az Azure SQL Database-ben.
SQL-adatbázis létrehozása percek alatt az Azure Portal használatával
Másolja a ODBC kapcsolati sztringet a Kapcsolati sztringek lapról.
A kód futtatása
Új fájl létrehozása
Hozzon létre egy
app.pynevű új fájlt.Modul-dokumentáció hozzáadása.
""" Connects to a SQL database using pyodbc """Importálja a
pyodbccsomagot.from os import getenv from dotenv import load_dotenv from pyodbc import connectHasználja a
pyodbc.connectfüggvényt, hogy csatlakozzon egy SQL-adatbázishoz.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))Az aktuális könyvtárban hozzon létre egy új fájlt.
.envA
.envfájlban adjon hozzá egy bejegyzést a kapcsolati sztringhez egy megadott névvelSQL_CONNECTION_STRING. Cserélje le az itt látható példát a tényleges kapcsolati karakterláncértékre.SQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Jótanács
Az itt használt kapcsolati sztring nagyban függ attól, hogy milyen TÍPUSÚ SQL-adatbázishoz csatlakozik. Ha Azure SQL Database-hez vagy SQL-adatbázishoz csatlakozik a Fabricben, használja az ODBC kapcsolati sztringet a kapcsolati sztringek lapról. Előfordulhat, hogy a forgatókönyvtől függően módosítania kell a hitelesítési típust. A kapcsolati sztringekről és azok szintaxisáról további információt a kapcsolati sztring szintaxisának hivatkozásában talál.
Lekérdezés végrehajtása
Sql-lekérdezési sztring használatával hajthat végre egy lekérdezést, és elemezheti az eredményeket.
Hozzon létre egy változót az SQL-lekérdezési sztringhez.
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; """Az
cursor.executesegítségével egy eredményhalmazt kérhetünk le a lekérdezésből az adatbázison.cursor = conn.cursor() cursor.execute(SQL_QUERY)Megjegyzés:
Ez a függvény lényegében minden lekérdezést elfogad, és eredményhalmazt ad vissza, amely a cursor.fetchone() használatával iterálható át.
Használja a
cursor.fetchall-t egyforeachciklussal, hogy lekérje az összes rekordot az adatbázisból. Ezután nyomtassa ki a rekordokat.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")Mentse a
app.pyfájlt.Nyisson meg egy terminált, és tesztelje az alkalmazást.
python app.pyItt a várt kimenet.
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
Sor beszúrása tranzakcióként
Biztonságosan hajthat végre egy INSERT utasítást, és paramétereket adhat át. A paraméterek értékként való átadása megvédi az alkalmazást az SQL-injektálási támadásoktól.
Importálás hozzáadása a
randrangeszámára arandomkönyvtárból aapp.pyelejére.from random import randrangeA
app.pyvégén adjon hozzá kódot egy véletlenszerű termékszám generálásához.productNumber = randrange(1000)Jótanács
Ha véletlenszerű termékszámot hoz létre, az biztosítja, hogy ezt a mintát többször is futtathatja.
SQL utasításszöveg létrehozása.
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) """Hajtsa végre az utasítást a következővel
cursor.execute: .cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )A lekért egyetlen eredmény első oszlopát használja
cursor.fetchval, írja ki az eredmény egyedi azonosítóját, majd véglegesítse a műveletet tranzakciókéntconnection.commit.resultId = cursor.fetchval() print(f"Inserted Product ID : {resultId}") conn.commit()Jótanács
connection.rollbackLehetőség van a tranzakció visszaállítására is.Zárja be a kurzort és a kapcsolatot a
cursor.closeésconnection.closesegítségével.cursor.close() conn.close()Mentse a
app.pyfájlt, és tesztelje újra az alkalmazást.python app.pyItt a várt kimenet.
Inserted Product ID : 1001
Következő lépés
Látogasson el az pyodbc illesztőprogram GitHub-adattárába további példákért, ötletek megosztásához, vagy problémák jelentéséhez.