Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a gyorsindításban uv egy Python szkripthez tartozó projektfüggőségeket és környezeteket kezelhetsz, amely egy olyan adatbázishoz csatlakozik, amelyet te hoztál létre és mintaadatokkal töltöttél be. A Pythonhoz készült mssql-python-illesztőprogramot használod az adatbázisodhoz való csatlakozáshoz, és alapvető műveleteket végzel, például adatolvasást és írást.
Az mssql-python illesztőprogram nem igényel külső függőségeket a Windows rendszerű gépeken. Az illesztőprogram egyetlen pip telepítéssel mindent telepít, amire szüksége van, így az illesztőprogram legújabb verzióját használhatja az új szkriptekhez anélkül, hogy megszegi azokat a szkripteket, amelyek frissítésére és tesztelésére nincs ideje.
az mssql-python dokumentációja | mssql-python forráskód | Csomag (PyPI) | Uv
Előfeltételek
Python 3.10 vagy újabb verzió.
Ha még nem rendelkezik Pythonnal, telepítse a Python futtatókörnyezetet és a pip csomagkezelőta python.org.
Nem szeretné használni a saját környezetét? Kövesd a Container és a helyi fejlesztést, hogy reprodukálható devcontainer vagy GitHub Codespaces környezetet hozz létre.
Visual Studio Code a következő bővítményekkel:
- Python-bővítmény a Visual Studio Code-hoz
Az Azure Command-Line Interface (CLI) a jelszó nélküli hitelesítéshez macOS és Linux rendszeren.
Ha még nem tette meg
uv, kövesse a telepítési utasításokat.Sql Serveren, Azure SQL Database-en vagy SQL Database-adatbázison a Fabricben a
AdventureWorks2025mintasémával és egy érvényes kapcsolati sztringgel.
Az operációs rendszer telepítésének előfeltételei
Egyszeri operációs rendszerspecifikus előfeltételek telepítése. A Windows felhasználók ezt a lépést kihagyhatják. A platform teljes részleteiért lásd: Install mssql-python.
SQL-adatbázis létrehozása
Létrehozni vagy csatlakozni SQL adatbázishoz az alábbi platformok egyikén:
A projekt létrehozása és a kód futtatása
- Új projekt létrehozása
- Függőségek hozzáadása
- A Visual Studio Code indítása
- Pyproject.toml frissítése
- Main.py frissítése
- A kapcsolati sztring mentése
- A szkript végrehajtása uv-futtatás használatával
Új projekt létrehozása
Nyisson meg egy parancssort a fejlesztői címtárban. Ha nincs ilyened, hozz létre egy új könyvtárat, például
pythonvagyscripts. Kerüld a mappákat a OneDrive-on, mert a szinkronizáció zavarhatja a virtuális környezet kezelését.Hozzon létre egy új projektet a
uvsegítségével.uv init mssql-python-repeatable-qs cd mssql-python-repeatable-qs
Függőségek hozzáadása
Ugyanabban a könyvtárban telepítse a mssql-python, python-dotenvés rich a csomagokat.
uv add mssql-python python-dotenv rich
Indítsa el a Visual Studio Code-ot
Ugyanabban a könyvtárban futtassa a következő parancsot.
code .
Pyproject.toml frissítése
Nyissa meg a
pyproject.tomlfájlt a szerkesztőben. Ez a fájl tartalmazza a projekted metaadatait.Tekintse át a fájl tartalmát. Ennek hasonlónak kell lennie ehhez a példához. Jegyezze fel a Python-verziót és a függőséget; a
mssql-pythonhasználatával határozhat meg minimális verziót a(z)>=számára. Ha pontos verziót szeretne, módosítsa a>=verziószám előtti értéket==. Minden csomag megoldott verziói az uv.lock tárolóban vannak. A lockfile biztosítja, hogy a projekten dolgozó fejlesztők következetes csomagverziókat használjanak. Azt is biztosítja, hogy pontosan ugyanazt a csomagverziót használja a csomag végfelhasználóknak való terjesztésekor. Véglegesítse mind apyproject.toml, mind auv.lockelemet, tekintse át a zárolófájl módosításait a pull requestekben, és futtasson egy, a szervezet által jóváhagyott függőségelemzőt a CI-ben. Ne szerkessze közvetlenül auv.lockfájlt.[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>=1.16.0", "python-dotenv>=1.1.1", "rich>=14.1.0", ]Frissítsd az
descriptionértéket.description = "Connects to a SQL database using mssql-python"Mentse és zárja be a fájlt.
Main.py frissítése
Nyissa meg a nevű
main.pyfájlt. Ennek hasonlónak kell lennie ehhez a példához.def main(): print("Hello from mssql-python-repeatable-qs!") if __name__ == "__main__": main()A fájl tetejére add hozzá a következő importokat a
def main()sort tartalmazó sor elé.Jótanács
Ha a Visual Studio Code-nak problémái vannak a csomagok megoldásával, frissítenie kell az értelmezőt a virtuális környezet használatára.
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 sleepAz importok és a
def main()sor között adja hozzá a következő kódot.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)Adja hozzá ezt a kódot az importok és a
def get_results(sleep_time: int = 0) -> None:kód közé._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 cursorKeresse meg ezt a kódot.
def main(): print("Hello from mssql-python-repeatable-qs!")Cserélje le erre a kódra.
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()Mentés és bezárás
main.py.
A kapcsolati sztring mentése
Nyissa meg a
.gitignorefájlt, és adjon hozzá kizárást a fájlokhoz.env. A fájlodnak hasonlónak kell lennie a következő példához.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envMentés és bezárás
.gitignore.Az aktuális könyvtárban hozzon létre egy új fájlt.
.envA
.envfájlban adjon hozzá egy bejegyzést a kapcsolati karakterlánchoz, a következő névvel:SQL_CONNECTION_STRING. Cserélje le a helyőrzőket a tényleges értékekre.SQL_CONNECTION_STRING="Server=<server>;Database=<database>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Important
.envmaradjon lokálisan, és ne kerüljön verziókezelés alá. CI- és telepített környezetek esetén a gépek közötti.envmásolás helyett add meg a kapcsolódási karakterláncot vagy az összetevőinek titkos adatait a platform titoktárolójából.A kapcsolati karakterlánc attól függ, milyen típusú SQL adatbázishoz csatlakozol. Azure SQL Database vagy SQL database Fabric-ben használja az ODBC-kapcsolati sztringet a Kapcsolati sztringek lapról, és állítsa be a hitelesítési típust a saját helyzetéhez. További információért a kapcsolati karakterlánc szintaxisáról lásd: Connection strings for mssql-python.
Jótanács
macOS rendszeren mind a
ActiveDirectoryInteractive, mind aActiveDirectoryDefaulthasználható a Microsoft Entra-hitelesítéshez.ActiveDirectoryInteractiveminden alkalommal, amikor futtatja a szkriptet, arra kéri, hogy jelentkezzen be. Az ismétlődő bejelentkezési promptok elkerülése érdekében jelentkezzen be egyszer az Azure CLIaz loginparanccsal, és használjaActiveDirectoryDefault.ActiveDirectoryDefaultújrahasználja a gyorsítótárban tárolt hitelesítő adatokat.
Használja az "uv run" parancsot a szkript futtatásához
A korábban megnyitott terminálablakban vagy egy új terminálablakban futtassa a következő parancsot.
uv run main.pyFuttasd újra a szkriptet, késleltetéssel, hogy mindkét állapotfrissítést láthasd.
uv run main.py --sleep-time 5A szkript befejeződésekor a következő várható kimenet jelenik meg.
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 │ └─────────────┴────────────────────────────────┴─────────────┘Ha a szkriptetet egy másik gépre telepíted, másold le a projektfájlokat, beleértve
pyproject.tomlésuv.lock, de ne a.venvmappát vagy bármilyen helyi.envfájlt. Az első futtatáskor hozd létre újra a virtuális környezetet, és a titkos adatokat a célkörnyezeten keresztül add meg.