Rövid útmutató: Csatlakozás a Python mssql-python illesztőprogramjával

Ebben a rövid útmutatóban egy Python-szkriptet csatlakoztat egy adatbázishoz, amelyet ön hozott létre és töltött be mintaadatokkal. A mssql-python Python-illesztőprogramot használod az adatbázisodhoz való csatlakozáshoz, és alapvető műveleteket végezel, 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.

A cikkben szereplő helyi SQL hitelesítési példát csak helyi fejlesztéshez használd egy olyan SQL Server instance ellen, amelyet te irányítasz. Az Azure SQL Database, a Fabricben futó SQL-adatbázis, a megosztott fejlesztői környezetek, a CI és az éles környezetbe történő üzembe helyezések esetében kezdjen a Microsoft Entra-hitelesítés vagy egy másik jelszó nélküli megoldás használatával.

az mssql-python dokumentációja | mssql-python forráskód | Csomag (PyPI) | Visual Studio Code

Előfeltételek

Hozzon létre vagy csatlakozzon egy adatbázishoz az SQL Server-en, Azure SQL Database-en vagy SQL adatbázishoz a Fabric-ben. Az alábbi lépésekkel állítson be egy adatbázist a AdventureWorks2025 mintasémával, és őrizze meg a kapcsolati karakterláncot későbbi használatra.

SQL-adatbázis létrehozása

Létrehozni vagy csatlakozni SQL adatbázishoz az alábbi platformok egyikén:

Beállítás

Ezeket a lépéseket követve konfigurálhatja a fejlesztési környezetet egy alkalmazás Python-illesztőprogram használatával mssql-python történő fejlesztéséhez.

Megjegyzés:

Ez az illesztőprogram a Tabular Data Stream (TDS) protokollt használja. Az SQL Server, az SQL adatbázis a Fabric-ben és az Azure SQL Database alapértelmezettben engedélyezi a TDS-t, így nincs szükség extra konfigurációra.

Az operációs rendszer előfeltételeinek telepítése

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++

Az mssql-python csomag telepítése

Szerezze be a mssql-python csomagot a PyPI-ból.

  1. Nyisson meg egy parancssort egy üres könyvtárban.

  2. Telepítse az mssql-python csomagot.

    pip install mssql-python
    

Telepítsd a python-dotenv csomagot

Szerezd meg a python-dotenv csomagot a PyPI-tól.

Ugyanabban a könyvtárban telepítse a python-dotenv csomagot.

pip install python-dotenv

Telepített csomagok ellenőrzése

Használd pip list annak ellenőrzésére, hogy telepítve vannak-e a kívánt csomagok.

pip list

A kód futtatása

Új fájl létrehozása

  1. Hozzon létre egy app.pynevű új fájlt.

  2. Modul-dokumentáció hozzáadása.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. Csomagok importálása, beleértve a mssql-python.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. Használja a mssql-python.connect függvényt, hogy csatlakozzon egy SQL-adatbázishoz.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. Az aktuális könyvtárban hozzon létre egy új fájlt..env

  6. A .env fájlban adjon hozzá egy bejegyzést a kapcsolati sztringhez egy megadott névvel SQL_CONNECTION_STRING. Használj az alábbi példák egyikét, és cseréld le a helykitöltőket a tényleges értékeidre.

    Az Azure SQL Database vagy a Fabricben található SQL-adatbázis esetén kezdje a Microsoft Entra-hitelesítéssel:

    SQL_CONNECTION_STRING="Server=<server>;Database=<database>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
    

    Helyi SQL Server fejlesztés közben kezdje az SQL hitelesítéssel:

    SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database>;UID=<user_id>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"
    

    Caution

    Kezeld .env inkább helyi fejlesztési kényelmi megoldásként, nem telepítési mechanizmusként. Soha ne commitolja, soha ne használja újra ezt az SQL-hitelesítési mintát megosztott vagy éles környezetben, és a helyi fejlesztésen kívül tartsa engedélyezve a tanúsítvány-ellenőrzést.

    A minta elnevezett példányokhoz, tárolókhoz vagy speciális beállításokhoz való testreszabásához használja a kapcsolati karakterláncokat. Ha Azure SQL Database-hez vagy SQL adatbázishoz csatlakozol Fabric-ben, használd a Microsoft Entra hitelesítést jelszó nélküli és interaktív bejelentkezési lehetőségekhez. Szélesebb körű titkos és tanúsítványi útmutatóért lásd: Biztonsági legjobb gyakorlatok.

    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 parancsral, és használd ActiveDirectoryDefault. ActiveDirectoryDefault újrahasználja a gyorsítótárban tárolt hitelesedést.

Lekérdezés végrehajtása

Használj egy Transact-SQL (T-SQL) lekérdezési stringet a lekérdezés végrehajtásához és az eredmények feldolgozásához.

  1. Hozz létre egy változót a T-SQL lekérdezési stringhez.

    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;
    """
    
  2. Az cursor.execute segítségével egy eredményhalmazt kérhetünk le a lekérdezésből az adatbázison.

    cursor = conn.cursor()
    cursor.execute(SQL_QUERY)
    

    Megjegyzés:

    Ez a függvény bármilyen lekérdezést elfogad, és eredményhalmazt ad vissza. Az eredményhalmazon való iteráláshoz használd a cursor.fetchone() metódust.

  3. Használja a cursor.fetchall-t egy for ciklussal, hogy lekérje az összes rekordot az adatbázisból. Ezután nyomtatd ki a feljegyzéseket.

    records = cursor.fetchall()
    for r in records:
        print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")
    
  4. Mentse a app.py fájlt.

  5. Nyisson meg egy terminált, és tesztelje az alkalmazást.

    python app.py
    

    Itt a várt kimenet.

    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
    

Sor beszúrása tranzakcióként

Biztonságosan hajthat végre egy utasítást INSERT , és paramétereket adhat át. A paraméterek értékként való átadása megvédi az alkalmazást az SQL-injektálási támadásoktól.

  1. Importálás hozzáadása a randrange számára a random könyvtárból a app.py elejére.

    from random import randrange
    
  2. A app.py végén adjon hozzá kódot egy véletlenszerű termékszám generálásához.

    productNumber = randrange(1000)
    

    Jótanács

    Egy véletlenszerű termékszám csökkenti a duplikált kulcshiba esélyét, ha ezt a mintát többször is lefuttatjuk.

  3. Hozz létre egy T-SQL-utasítást tartalmazó karakterláncot.

    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)
    """
    
  4. Hajtsa végre az utasítást a következővel cursor.execute: .

    cursor.execute(
        SQL_STATEMENT,
        {
            'name': f'Example Product {productNumber}',
            'product_number': f'EXAMPLE-{productNumber}',
            'standard_cost': 100,
            'list_price': 200
        }
    )
    
  5. Az egyetlen eredményt olvasd be cursor.fetchone, nyomtasd ki az eredmény egyedi azonosítóját, majd véglegesítsd a műveletet tranzakcióként connection.commit.

    result = cursor.fetchone()
    print(f"Inserted Product ID : {result.ProductID}")
    conn.commit()
    

    Jótanács

    connection.rollback Lehetőség van a tranzakció visszaállítására is.

  6. Zárja be a kurzort és a kapcsolatot a cursor.close és connection.close segítségével.

    cursor.close()
    conn.close()
    
  7. Mentse a app.py fájlt, és tesztelje újra az alkalmazást.

    python app.py
    

    Itt a várt kimenet.

    Inserted Product ID : 1001