Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku połączysz skrypt języka Python z bazą danych, którą utworzyłeś i wypełniłeś danymi przykładowymi. Sterownik mssql-python dla Pythona służy do łączenia się z twoją bazą danych i wykonywania podstawowych operacji, takich jak odczytywanie i zapisywanie danych.
Sterownik mssql-python nie wymaga żadnych zależności zewnętrznych na maszynach z systemem Windows. Sterownik instaluje wszystko, czego potrzebuje w ramach pojedynczej pip instalacji, co pozwala na użycie najnowszej wersji sterownika dla nowych skryptów bez przerywania innych skryptów, których nie masz czasu na uaktualnienie i przetestowanie.
Używaj przykładu lokalnej autoryzacji SQL z tego artykułu tylko do lokalnego rozwoju na instancji SQL Server, którą kontrolujesz. W przypadku Azure SQL Database, baz danych SQL w usłudze Fabric, współdzielonych środowisk deweloperskich, CI oraz wdrożeń produkcyjnych zacznij od korzystania z uwierzytelniania Microsoft Entra lub innego mechanizmu bezhasłowego.
Dokumentacja
Wymagania wstępne
Python 3.10 lub nowszy
Jeśli nie masz jeszcze języka Python, zainstaluj środowisko uruchomieniowe języka Python i menedżera pakietów z python.org.
Nie chcesz używać własnego środowiska? Postępuj zgodnie z instrukcjami w sekcji Kontenery i programowanie lokalne, aby utworzyć odtwarzalne środowisko devcontainer lub GitHub Codespaces.
Utwórz lub połącz się z bazą danych na SQL Server, Azure SQL Database lub bazie SQL w Fabric. Użyj poniższych kroków, aby skonfigurować bazę danych z przykładowym AdventureWorks2025 schematem i zachowaj parametry połączenia na później.
Tworzenie bazy danych SQL
Stwórz lub połącz się z bazą danych SQL na jednej z następujących platform:
Konfiguracja
Wykonaj następujące kroki, aby skonfigurować środowisko deweloperskie do tworzenia aplikacji przy użyciu mssql-python sterownika języka Python.
Uwaga / Notatka
Ten sterownik wykorzystuje protokół Tabular Data Stream (TDS). SQL Server, baza danych SQL w Fabric oraz Azure SQL Database domyślnie włączają TDS, więc nie jest potrzebna dodatkowa konfiguracja.
Instalowanie pakietu mssql-python
mssql-python Pobierz pakiet z PyPI.
Otwórz wiersz polecenia w pustym katalogu.
Zainstaluj pakiet
mssql-python.
Zainstalować pakiet python-dotenv
Pobierz pakiet 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
Uruchamianie kodu
Tworzenie nowego pliku
Utwórz nowy plik o nazwie
app.py.Dodaj docstring modułu.
""" Connects to a SQL database using mssql-python """Importuj pakiety, w tym
mssql-python.from os import getenv from dotenv import load_dotenv from mssql_python import connectmssql-python.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. Użyj jednego z poniższych przykładów i zastąp symbole zastępcze rzeczywistymi wartościami.Dla Azure SQL Database lub SQL database in Fabric, zacznij od uwierzytelniania Microsoft Entra:
SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Dla lokalnego SQL Server podczas tworzenia zacznij od uwierzytelniania SQL:
SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database_name>;UID=<username>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"Caution
Traktuj
.envto jako lokalną wygodę rozwoju, a nie mechanizm wdrożenia. Nigdy go nie commituj, nigdy nie używaj tego przykładu uwierzytelniania SQL w środowiskach współdzielonych lub produkcyjnych i utrzymuj walidację certyfikatów włączoną poza lokalnym programem.Użyj parametrów połączenia, aby dostosować przykład do nazwanych instancji, kontenerów lub zaawansowanych ustawień. Jeśli nawiązujesz połączenie z usługą Azure SQL Database lub bazą danych SQL w usłudze Fabric, użyj uwierzytelniania Microsoft Entra, aby korzystać z opcji logowania bez hasła i logowania interaktywnego. Szersze wytyczne dotyczące tajemnic i certyfikatów znajdziesz w najlepszych praktykach bezpieczeństwa.
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
Funkcja ta zasadniczo akceptuje dowolne zapytanie i zwraca zbiór wyników. Aby przejść przez zbiór wyników, użyj kursor.fetchone().
Użyj
cursor.fetchallz pętląfor, aby pobrać wszystkie rekordy z bazy danych. Następnie wydrukuj dokumenty.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")app.pyplik.Wskazówka
Zarówno
ActiveDirectoryInteractive, jak iActiveDirectoryDefaultdziałają na systemie macOS do uwierzytelniania Microsoft Entra.ActiveDirectoryInteractivemonituje o zalogowanie się przy każdym uruchomieniu skryptu. Aby uniknąć powtarzających się monitów logowania, zaloguj się raz za pomocą Azure CLI, uruchamiającaz login, a następnie użyjActiveDirectoryDefault, które ponownie wykorzystuje poświadczenia zapisane w pamięci podręcznej.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 (%(name)s, %(product_number)s, %(standard_cost)s, %(list_price)s, CURRENT_TIMESTAMP) """Wykonaj instrukcję przy użyciu polecenia
cursor.execute.cursor.execute( SQL_STATEMENT, { 'name': f'Example Product {productNumber}', 'product_number': f'EXAMPLE-{productNumber}', 'standard_cost': 100, 'list_price': 200 } )Pobierz pojedynczy wynik przy użyciu metody
cursor.fetchone, wyświetl unikatowy identyfikator wyniku, a następnie zatwierdź operację jako transakcję przy użyciu poleceniaconnection.commit.result = cursor.fetchone() print(f"Inserted Product ID : {result.ProductID}") 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ępne kroki
Wykorzystaj te artykuły, aby dalej budować:
- Parametry połączenia umożliwiające dostosowanie przykładu do lokalnego serwera SQL Server, usługi Azure SQL, kontenerów i nazwanych wystąpień.
- Zarządzanie połączeniami przy użyciu menedżerów kontekstu, pul połączeń i ustawień połączenia.
- Rozwiązywanie problemów w celu diagnozowania uwierzytelniania, certyfikatów i łączności.