Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym szybkim starcie połączysz skrypt Pythona z utworzoną przez Ciebie bazą danych, załadowaną przykładowymi danymi. Sterownik pyodbc dla Pythona służy do łączenia się z twoją bazą danych i wykonywania podstawowych operacji, takich jak odczytywanie i zapisywanie danych.
Dokumentacja pyodbc | kod źródłowy pyodbc | Pakiet (PyPi)
Wymagania wstępne
Python 3
Jeśli nie masz jeszcze języka Python, zainstaluj środowisko uruchomieniowe języka Python i menedżera pakietów python (PyPI) z python.org.
Wolisz nie używać własnego środowiska? Otwórz jako devcontainer przy użyciu usługi GitHub Codespaces.
pyodbcpakiet z PyPI.Baza danych w programie SQL Server, usłudze Azure SQL Database lub bazie danych SQL w usłudze Fabric z przykładowym
AdventureWorks2025schematem i prawidłowymi parametrami połączenia.
Konfigurowanie
Wykonaj następujące kroki, aby skonfigurować środowisko deweloperskie do tworzenia aplikacji przy użyciu pyodbc sterownika języka Python.
Uwaga / Notatka
Ten sterownik używa protokołu strumienia danych tabelarycznych (TDS), z którego domyślnie korzysta SQL Server, SQL database w Fabric oraz Azure SQL Database. Nie jest wymagana żadna dodatkowa konfiguracja.
Instalowanie pakietu pyodbc
pyodbc Pobierz pakiet z PyPI.
Otwórz wiersz polecenia w pustym katalogu.
Zainstaluj pakiet
pyodbc.pip install pyodbc
Instalowanie pakietu python-dotenv
Pobierz element python-dotenv z PyPI.
W tym samym katalogu zainstaluj pakiet
python-dotenv.pip install python-dotenv
Sprawdzanie zainstalowanych pakietów
Możesz użyć narzędzia wiersza polecenia PyPI, aby sprawdzić, czy są zainstalowane zamierzone pakiety.
Sprawdź listę zainstalowanych pakietów za pomocą polecenia
pip list.pip list
Tworzenie bazy danych SQL
Ten szybki start wymaga schematu AdventureWorks2025 Lightweight w Microsoft SQL Server, bazie danych SQL w Fabric lub Azure SQL Database.
Tworzenie bazy danych SQL w ciągu kilku minut przy użyciu witryny Azure Portal
ODBC Skopiuj parametry połączenia z karty Parametry połączenia.
Uruchamianie kodu
Tworzenie nowego pliku
Utwórz nowy plik o nazwie
app.py.Dodaj docstring modułu.
""" Connects to a SQL database using pyodbc """Zaimportuj pakiet
pyodbc.from os import getenv from dotenv import load_dotenv from pyodbc import connectpyodbc.connectUżyj funkcji , aby nawiązać połączenie z bazą danych SQL.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))W bieżącym katalogu utwórz nowy plik o nazwie
.env.W pliku
.envdodaj wpis dla łańcucha połączenia o nazwieSQL_CONNECTION_STRING. Zastąp przykład wartością rzeczywistych parametrów połączenia.SQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Wskazówka
Parametry połączenia używane w tym miejscu w dużej mierze zależą od typu bazy danych SQL, z którą nawiązujesz połączenie. Jeśli nawiązujesz połączenie z usługą Azure SQL Database lub bazą danych SQL w sieci szkieletowej, użyj parametrów połączenia ODBC z karty parametry połączenia. W zależności od scenariusza może być konieczne dostosowanie typu uwierzytelniania. Aby uzyskać więcej informacji na temat parametrów połączenia i ich składni, zobacz dokumentację składni parametrów połączenia.
Wykonywanie zapytania
Użyj ciągu zapytania SQL, aby wykonać zapytanie i przeanalizować wyniki.
Utwórz zmienną dla ciągu zapytania 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; """Użyj
cursor.executepolecenia , aby pobrać zestaw wyników z zapytania względem bazy danych.cursor = conn.cursor() cursor.execute(SQL_QUERY)Uwaga / Notatka
Ta funkcja zasadniczo akceptuje dowolne zapytanie i zwraca zestaw wyników, który można iterować za pomocą funkcji cursor.fetchone().
Użyj
cursor.fetchallz pętląforeach, aby pobrać wszystkie rekordy z bazy danych. Następnie wydrukuj rekordy.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")app.pyplik.Otwórz terminal i przetestuj aplikację.
python app.pyOto oczekiwane dane wyjściowe.
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
Wstaw wiersz jako transakcję
Bezpiecznie wykonaj instrukcję INSERT i przekaż parametry. Przekazywanie parametrów jako wartości chroni aplikację przed atakami polegającymi na wstrzyknięciu kodu SQL .
Dodaj import
randrangez bibliotekirandomna początkuapp.py.from random import randrangeNa końcu
app.pydodaj kod w celu wygenerowania losowego numeru produktu.productNumber = randrange(1000)Wskazówka
Generowanie losowego numeru produktu w tym miejscu gwarantuje, że można uruchomić ten przykład wiele razy.
Utwórz ciąg instrukcji SQL.
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) """Wykonaj instrukcję przy użyciu polecenia
cursor.execute.cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )Pobierz pierwszą kolumnę pojedynczego wyniku przy użyciu
cursor.fetchval, wyświetl unikatowy identyfikator wyniku, a następnie zatwierdź operację jako transakcję przy użyciuconnection.commit.resultId = cursor.fetchval() print(f"Inserted Product ID : {resultId}") conn.commit()Wskazówka
Opcjonalnie możesz użyć
connection.rollbackpolecenia , aby wycofać transakcję.Zamknij kursor i połączenie za pomocą polecenia
cursor.closeiconnection.close.cursor.close() conn.close()app.pyplik i ponownie przetestuj aplikację.python app.pyOto oczekiwane dane wyjściowe.
Inserted Product ID : 1001
Następny krok
Odwiedź repozytorium GitHub sterowników pyodbc, aby uzyskać więcej przykładów, wnieść pomysły lub zgłaszać problemy.