Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu připojíte skript Pythonu k databázi, kterou jste vytvořili a načetli s ukázkovými daty. Pomocí driveru pyodbc pro Python se připojujete k databázi a provádíte základní operace, jako je čtení a zapisování dat.
Dokumentace pyodbc | Zdrojový kód pyodbc | Balíček (PyPi)
Požadavky
Python 3
Pokud ještě nemáte Python, nainstalujte z python.org správce balíčků Python runtime a Python Package Index (PyPI).
Chcete raději nepoužívat vlastní prostředí? Otevřete jako devcontainer pomocí GitHub Codespaces.
pyodbcbalíček z PyPI.Databáze na SQL Serveru, Azure SQL Database nebo SQL databáze v Fabric s ukázkovým
AdventureWorks2025schématem a platným připojovacím řetězcem.
Instalace
Podle těchto kroků nakonfigurujte vývojové prostředí pro vývoj aplikace pomocí ovladače Pythonu pyodbc .
Poznámka:
Tento ovladač používá protokol TDS (Tabular Data Stream), který je ve výchozím nastavení povolený v SQL Serveru, databázi SQL v Prostředcích infrastruktury a Azure SQL Database. Nevyžaduje se žádná další konfigurace.
Instalace balíčku pyodbc
pyodbc
Získejte balíček z PyPI.
Otevřete příkazový řádek v prázdném adresáři.
Nainstalujte balíček
pyodbc.pip install pyodbc
Instalace balíčku python-dotenv
Získejte python-dotenv z PyPI.
Ve stejném adresáři nainstalujte
python-dotenvbalíček.pip install python-dotenv
Kontrola nainstalovaných balíčků
Pomocí nástroje příkazového řádku PyPI můžete ověřit, že jsou nainstalované požadované balíčky.
Zkontrolujte seznam nainstalovaných balíčků s příponou
pip list.pip list
Vytvoření databáze SQL
Tento rychlý start vyžaduje schéma AdventureWorks2025 Lightweight na Microsoft SQL Serveru, SQL databázi v Fabric nebo Azure SQL Database.
Vytvoření databáze SQL v řádu minut pomocí webu Azure Portal
ODBC Zkopírujte připojovací řetězec z karty Připojovací řetězce.
Spuštění kódu
Vytvoření nového souboru
Vytvořte nový soubor s názvem
app.py.Přidejte dokumentační řetězec modulu.
""" Connects to a SQL database using pyodbc """Importujte balíček
pyodbc.from os import getenv from dotenv import load_dotenv from pyodbc import connectpyodbc.connectPomocí funkce se připojte k databázi SQL.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))V aktuálním adresáři vytvořte nový soubor s názvem
.env..envV souboru přidejte položku pro připojovací řetězec s názvemSQL_CONNECTION_STRING. Příklad zde nahraďte skutečnou hodnotou připojovacího řetězce.SQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Návod
Připojovací řetězec použitý zde do značné míry závisí na typu databáze SQL, ke které se připojujete. Pokud se připojujete k Azure SQL Database nebo databázi SQL ve Fabric, použijte připojovací řetězec ODBC z karty Připojovací řetězce. Možná budete muset upravit typ ověření v závislosti na vašem scénáři. Další informace o připojovacích řetězcích a jejich syntaxi najdete v referenčních informacích k syntaxi připojovacího řetězce.
Provedení dotazu
Pomocí řetězce dotazu SQL spusťte dotaz a parsujte výsledky.
Vytvořte proměnnou pro řetězec dotazu SQL.
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; """Slouží
cursor.executek načtení sady výsledků z dotazu na databázi.cursor = conn.cursor() cursor.execute(SQL_QUERY)Poznámka:
Tato funkce v podstatě přijímá jakýkoli dotaz a vrací sadu výsledků, kterou lze projít pomocí cursor.fetchone().
Použijte
cursor.fetchallse smyčkouforeachk získání všech záznamů z databáze. Potom záznamy vytiskněte.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")app.pysoubor.Otevřete terminál a otestujte aplikaci.
python app.pyTady je očekávaný výstup.
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
Vložte řádek jako transakci
Bezpečně spusťte příkaz INSERT a předejte parametry. Předávání parametrů jako hodnot chrání vaši aplikaci před útoky prostřednictvím injektáže SQL .
Přidejte import
randrangez knihovnyrandomdo horní části souboruapp.py.from random import randrangeNa konci
app.pypřidejte kód pro vygenerování náhodného čísla výrobku.productNumber = randrange(1000)Návod
Vygenerování náhodného čísla produktu tady zajistí, že tento vzorek můžete spustit několikrát.
Vytvořte řetězec příkazu SQL.
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) """Proveďte příkaz pomocí
cursor.execute.cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )Načtěte první sloupec jednoho výsledku pomocí
cursor.fetchval, vytiskněte jedinečný identifikátor výsledku a pak potvrďte operaci jako transakci pomocíconnection.commit.resultId = cursor.fetchval() print(f"Inserted Product ID : {resultId}") conn.commit()Návod
Volitelně můžete použít
connection.rollbackk vrácení transakce zpět.Zavřete kurzor a připojení pomocí
cursor.closeaconnection.close.cursor.close() conn.close()app.pysoubor a aplikaci znovu otestujte.python app.pyTady je očekávaný výstup.
Inserted Product ID : 1001
Další krok
Další příklady najdete v pyodbc úložišti GitHubu ovladače, kde můžete přispívat nápady nebo hlásit problémy.