Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten använder uv du för att hantera projektberoenden och miljöer för Python-skript som ansluter till en databas som du har skapat och läst in med exempeldata. Du använder mssql-python drivrutinen för Python för att ansluta till databasen och utföra grundläggande åtgärder, till exempel att läsa och skriva data.
Drivrutinen mssql-python kräver inga externa beroenden på Windows-datorer. Drivrutinen installerar allt som behövs med en enda pip installation, så att du kan använda den senaste versionen av drivrutinen för nya skript utan att bryta andra skript som du inte har tid att uppgradera och testa.
mssql-python-dokumentation | mssql-python-källkod | Paket (PyPI) | Uv
Förutsättningar
Python 3.10 eller senare
Om du inte redan har Python installerar du Python-körnings - och pip-pakethanteraren från python.org.
Vill du inte använda din egen miljö? Använd Container- och lokal utveckling för att skapa en reproducerbar devcontainer eller en GitHub Codespaces-miljö.
Visual Studio Code med följande tillägg:
- Python-tillägg för Visual Studio Code
Azure Command-Line Interface (CLI) för lösenordslös autentisering i macOS och Linux.
Om du inte redan har
uvföljer du installationsanvisningarna.En databas på SQL Server, Azure SQL Database eller SQL Database i Fabric med
AdventureWorks2025exempelschemat och en giltig anslutningssträng.
Installera operativsystemsspecifika engångsförutsättningar. Windows-användare kan hoppa över detta steg. För fullständiga plattformsdetaljer, se Installera mssql-python.
Skapa en SQL-databas
Skapa eller koppla till en SQL-databas på en av följande plattformar:
Skapa projektet och kör koden
- Skapa ett nytt projekt
- Lägga till beroenden
- Starta Visual Studio Code
- Uppdatera pyproject.toml
- Uppdatera main.py
- Spara anslutningssträngen
- Använd uv run för att köra skriptet
Skapa ett nytt projekt
Öppna en kommandotolk i utvecklingskatalogen. Om du inte har någon, skapa en ny katalog, till exempel
pythonellerscripts. Undvik mappar på din OneDrive, eftersom synkronisering kan störa hanteringen av din virtuella miljö.Skapa ett nytt projekt med
uv.uv init mssql-python-repeatable-qs cd mssql-python-repeatable-qs
Lägga till beroenden
Installera paketen mssql-python, python-dotenvoch rich i samma katalog.
uv add mssql-python python-dotenv rich
Öppna Visual Studio Code
Kör följande kommando i samma katalog.
code .
Uppdatera pyproject.toml
pyproject.toml innehåller metadata för projektet. Öppna filen i din favoritredigerare.
Granska innehållet i filen. Det bör likna det här exemplet. Notera Python-versionen och beroendet för
mssql-python. Använd>=för att ange en lägsta version. Om du föredrar en exakt version, ändra>=före versionsnumret till==. De upplösta versionerna av varje paket lagras i uv.lock. Låsfilen säkerställer att utvecklare som arbetar med projektet använder konsekventa paketversioner. Det säkerställer också att exakt samma uppsättning paketversioner används när du distribuerar paketet till slutanvändare. Checka in bådepyproject.tomlochuv.lock, granska ändringar i låsfilen i pullbegäranden och kör en beroendeskanner som godkänts av organisationen i CI. Redigera inteuv.lockfilen direkt.[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", ]Uppdatera beskrivningen så att den blir mer beskrivande.
description = "Connects to a SQL database using mssql-python"Spara och stäng filen.
Uppdatera main.py
Öppna filen med namnet
main.py. Det bör likna det här exemplet.def main(): print("Hello from mssql-python-repeatable-qs!") if __name__ == "__main__": main()Högst upp i filen, lägg till följande importer före raden med
def main().Tips/Råd
Om Visual Studio Code har problem med att lösa paket måste du uppdatera tolken så att den använder den virtuella miljön.
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 sleepMellan importerna och raden med
def main()lägger du till följande 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)Mellan importerna och
def get_results(sleep_time: int = 0) -> None:lägger du till den här koden._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 cursorHitta den här koden.
def main(): print("Hello from mssql-python-repeatable-qs!")Ersätt den med den här koden.
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()Spara och stäng
main.py.
Spara anslutningssträngen
.gitignoreÖppna filen och lägg till ett undantag för.envfiler. Filen bör likna det här exemplet. Se till att spara och stänga den när du är klar.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envI den aktuella katalogen skapar du en ny fil med namnet
.env.I
.env-filen lägger du till en post för din anslutningssträng med namnetSQL_CONNECTION_STRING. Ersätt exemplet här med det faktiska anslutningssträngsvärdet.SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Important
Håll
.envlokalt och utanför versionshantering. För CI och distribuerade miljöer, injicera reťazec pripojenia eller dess komponenthemligheter från din plattforms hemliga lagring istället för att kopiera.envmellan maskiner.Tips/Råd
Anslutningssträngen som används här beror till stor del på vilken typ av SQL-databas du ansluter till. Om du ansluter till en Azure SQL Database eller en SQL-databas i Fabric använder du ODBC-anslutningssträngen från fliken Anslutningssträngar. Du kan behöva justera autentiseringstypen beroende på ditt scenario. Mer information om anslutningssträngar och deras syntax finns i referens för anslutningssträngssyntax.
Använd uv run för att köra skriptet
Tips/Råd
På macOS fungerar både ActiveDirectoryInteractive och ActiveDirectoryDefault för Microsoft Entra-autentisering.
ActiveDirectoryInteractive uppmanar dig att logga in varje gång du kör skriptet. För att undvika upprepade inloggningspromptar, logga in en gång via Azure CLI genom att köra az login, och använd ActiveDirectoryDefaultsedan , vilket återanvänder den cachade legitimationen.
Kör följande kommando i terminalfönstret från tidigare eller ett nytt terminalfönster som är öppet till samma katalog.
uv run main.pyNu ska vi köra den igen men långsammare för att kunna se båda statusuppdateringarna.
uv run main.py --sleep-time 5Här är de förväntade utdata när skriptet är klart.
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 │ └─────────────┴────────────────────────────────┴─────────────┘För att distribuera ditt skript till en annan maskin, kopiera projektfilerna, inklusive
pyproject.tomlochuv.lock, men inte.venvmappen eller någon lokal.envfil. Återskapa den virtuella miljön vid första körningen och leverera hemligheter genom målmiljön.
Nästa steg
Använd dessa artiklar för att fortsätta bygga:
- Bygg anslutningssträngar för att konfigurera anslutningar för olika SQL-databastyper och autentiseringsmetoder.
- Att köra frågor för att lära sig om frågemönster, parameteriserade frågor och resultathantering.
- Anslutningshantering för att använda kontexthanterare, pooling och anslutningsinställningar.