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 przewodniku szybkiego startu użyjesz uv do zarządzania zależnościami i środowiskami projektu dla skryptu Python, który łączy się z bazą danych, którą utworzyłeś i załadowałeś przykładowymi danymi. Używasz sterownika mssql-python dla Pythona, aby połączyć się z bazą danych i wykonywać podstawowe operacje, takie 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.
Dokumentacja mssql-python | | |
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.
Visual Studio Code z następującymi rozszerzeniami:
Rozszerzenie języka Python dla programu Visual Studio Code
Jeśli jeszcze nie masz
uv, zainstalujuv, postępując zgodnie z instrukcjami z https://docs.astral.sh/uv/getting-started/installation/.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.Zainstaluj jednorazowe wymagania wstępne dotyczące systemu operacyjnego.
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 projektu i uruchamianie kodu
- Tworzenie nowego projektu
- Dodawanie zależności
- Uruchamianie programu Visual Studio Code
- Aktualizowanie pliku pyproject.toml
- Aktualizowanie main.py
- Zapisywanie parametrów połączenia
- Użyj narzędzia uv run, aby wykonać skrypt
Tworzenie nowego projektu
Otwórz wiersz polecenia w katalogu deweloperów. Jeśli go nie masz, utwórz nowy katalog o nazwie
python,scriptsitp. Unikaj folderów w usłudze OneDrive, synchronizacja może zakłócać zarządzanie środowiskiem wirtualnym.Utwórz nowy projekt za pomocą polecenia
uv.uv init mssql-python-repeatable-qs cd mssql-python-repeatable-qs
Dodawanie zależności
W tym samym katalogu zainstaluj pakiety mssql-python, python-dotenv i rich.
uv add mssql-python python-dotenv rich
Uruchom program Visual Studio Code.
W tym samym katalogu uruchom następujące polecenie.
code .
Aktualizowanie pliku pyproject.toml
Plik pyproject.toml zawiera metadane projektu. Otwórz plik w ulubionym edytorze.
Przejrzyj zawartość pliku. Powinien być podobny do tego przykładu. Zanotuj wersję Pythona i zależność dla
mssql-python, które używają>=do określenia minimalnej wersji. Jeśli wolisz dokładną wersję, zmień>=wartość przed numerem wersji na==. Rozwiązane wersje każdego pakietu są następnie przechowywane w uv.lock. Plik lockfile zapewnia, że deweloperzy pracujący nad projektem korzystają ze spójnych wersji pakietów. Gwarantuje również, że podczas dystrybucji pakietu dla użytkowników końcowych jest używany dokładnie ten sam zestaw wersji pakietów. Nie należy edytowaćuv.lockpliku.[project] name = "mssql-python-repeatable-qs" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.11" dependencies = [ "mssql-python>=0.10.0", "python-dotenv>=1.1.1", "rich>=14.1.0", ]Zaktualizuj opis, aby był bardziej opisowy.
description = "Connects to a SQL database using mssql-python"Zapisz i zamknij plik.
Aktualizowanie main.py
Otwórz plik o nazwie
main.py. Powinien być podobny do tego przykładu.def main(): print("Hello from mssql-python-repeatable-qs!") if __name__ == "__main__": main()W górnej części pliku dodaj następujące importy powyżej wiersza za pomocą polecenia
def main().Wskazówka
Jeśli program Visual Studio Code ma problemy z rozwiązaniem problemów z pakietami, należy zaktualizować interpreter, aby używał środowiska wirtualnego.
from os import getenv from dotenv import load_dotenv from mssql_python import connect, Connection, Cursor from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn from rich.table import Table from argparse import ArgumentParser from time import sleepMiędzy importami a wierszem z
def main()dodaj następujący kod.def get_results(sleep_time: int = 0) -> None: with Progress( SpinnerColumn(), TextColumn("[progress.description]{task.description}"), transient=True, ) as progress: task = progress.add_task( description="Connecting to SQL...") cursor = query_sql() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.update(task, description="Formatting results...") table = Table(title="Orders by Customer") # https://rich.readthedocs.io/en/stable/appendix/colors.html table.add_column("Customer ID", style="bright_blue", justify="center") table.add_column("Company Name", style="bright_white", justify="left") table.add_column("Order Count", style="bold green", justify="right") records = cursor.fetchall() for r in records: table.add_row(f"{r.CustomerID}", f"{r.CompanyName}", f"{r.OrderCount}") if cursor: cursor.close() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.stop() Console().print(table)Między importami i
def get_results(sleep_time: int = 0) -> None:dodaj ten kod._connection = None def get_connection() -> Connection: global _connection if not _connection: load_dotenv() _connection = connect(getenv("SQL_CONNECTION_STRING")) # type: ignore return _connection def query_sql() -> Cursor: 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; """ conn = get_connection() cursor = conn.cursor() cursor.execute(SQL_QUERY) return cursorZnajdź ten kod.
def main(): print("Hello from test!")Zastąp go tym kodem.
def main() -> None: parser = ArgumentParser() parser.add_argument("--sleep-time", type=int, default=0, help="Time to sleep in seconds to simulate slow connection") args = parser.parse_args() if args.sleep_time > 0: get_results(args.sleep_time) else: get_results() if _connection: _connection.close()Zapisz i zamknij plik
main.py.
Zapisz łańcuch połączeniowy
.gitignoreOtwórz plik i dodaj wykluczenie dla.envplików. Plik powinien być podobny do tego przykładu. Pamiętaj, aby zapisać i zamknąć go po zakończeniu.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envW 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="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.
Użyj narzędzia uv run, aby wykonać skrypt
Wskazówka
Aby korzystać z uwierzytelniania Entra firmy Microsoft w systemie macOS, musisz zalogować się za pośrednictwem rozszerzenia usługi Azure Repos w programie Visual Studio Code lub za az login pośrednictwem interfejsu azure Command-Line (CLI).
W wcześniejszym oknie terminalu lub w nowym oknie terminalu, które jest otwarte w tym samym katalogu, wykonaj następujące polecenie.
uv run main.pyTeraz uruchomimy to ponownie, ale wolniej, aby zobaczyć obie zmiany stanu.
uv run main.py --sleep-time 5Oto oczekiwane dane wyjściowe po zakończeniu działania skryptu.
Orders by Customer ┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ ┃ Customer ID ┃ Company Name ┃ Order Count ┃ ┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩ │ 29485 │ Professional Sales and Service │ 1 │ │ 29531 │ Remarkable Bike Store │ 1 │ │ 29546 │ Bulk Discount Store │ 1 │ │ 29568 │ Coalition Bike Company │ 1 │ │ 29584 │ Futuristic Bikes │ 1 │ └─────────────┴────────────────────────────────┴─────────────┘Aby wdrożyć skrypt na innej maszynie, skopiuj wszystkie pliki z wyjątkiem
.venvfolderu na inną maszynę. Środowisko wirtualne jest odtwarzane podczas pierwszego uruchomienia.
Następny krok
Odwiedź repozytorium GitHub dla sterownika, aby uzyskać więcej przykładów, współtworzyć idee lub zgłaszać problemy.