Rövid útmutató: Megismételhető üzembe helyezések a Python mssql-python illesztőprogramjával

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 AdventureWorks2025 mintasé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.

apk add libtool krb5-libs krb5-dev libstdc++

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

  1. Nyisson meg egy parancssort a fejlesztői címtárban. Ha nincs ilyened, hozz létre egy új könyvtárat, például python vagy scripts. Kerüld a mappákat a OneDrive-on, mert a szinkronizáció zavarhatja a virtuális környezet kezelését.

  2. Hozzon létre egy új projektet a uv segí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

  1. Nyissa meg a pyproject.toml fájlt a szerkesztőben. Ez a fájl tartalmazza a projekted metaadatait.

  2. 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-python haszná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 a pyproject.toml, mind a uv.lock elemet, 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 a uv.lock fá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",
    ]
    
  3. Frissítsd az description értéket.

    description = "Connects to a SQL database using mssql-python"
    
  4. Mentse és zárja be a fájlt.

Main.py frissítése

  1. 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()
    
  2. 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 sleep
    
  3. Az 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)
    
  4. 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 cursor
    
  5. Keresse meg ezt a kódot.

    def main():
        print("Hello from mssql-python-repeatable-qs!")
    
  6. 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()
    
  7. Mentés és bezárás main.py.

A kapcsolati sztring mentése

  1. Nyissa meg a .gitignore fá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
    .env
    
  2. Mentés és bezárás .gitignore.

  3. Az aktuális könyvtárban hozzon létre egy új fájlt..env

  4. A .env fá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

    .env maradjon 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 .env má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 a ActiveDirectoryDefault használható a Microsoft Entra-hitelesítéshez. ActiveDirectoryInteractive minden 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 login paranccsal, és használja ActiveDirectoryDefault. ActiveDirectoryDefault újrahasználja a gyorsítótárban tárolt hitelesítő adatokat.

Használja az "uv run" parancsot a szkript futtatásához

  1. A korábban megnyitott terminálablakban vagy egy új terminálablakban futtassa a következő parancsot.

    uv run main.py
    
  2. Futtasd újra a szkriptet, késleltetéssel, hogy mindkét állapotfrissítést láthasd.

    uv run main.py --sleep-time 5
    

    A 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 │
    └─────────────┴────────────────────────────────┴─────────────┘
    
  3. Ha a szkriptetet egy másik gépre telepíted, másold le a projektfájlokat, beleértve pyproject.toml és uv.lock, de ne a .venv mappát vagy bármilyen helyi .env fá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.