Rychlý start: Připojení pomocí ovladače mssql-python pro Python

V tomto rychlém startu připojíte skript Pythonu k databázi, kterou jste vytvořili a načetli s ukázkovými daty. Používáte mssql-python ovladač pro Python k připojení k databázi a provádění základních operací, jako je čtení a zápis dat.

Ovladač mssql-python nevyžaduje žádné externí závislosti na počítačích s Windows. Ovladač nainstaluje všechno, co potřebuje, s jednou pip instalací, což vám umožní používat nejnovější verzi ovladače pro nové skripty bez přerušení jiných skriptů, které nemáte čas upgradovat a testovat.

Použijte příklad lokální SQL autentizace v tomto článku pouze pro lokální vývoj proti instanci SQL Server, kterou ovládáte. V případě služby Azure SQL Database, databáze SQL v řešení Fabric, sdílených vývojových prostředí, CI a nasazení do produkce začněte s ověřováním Microsoft Entra nebo jiným bezheslovým postupem.

Dokumentace mssql-python | | |

Požadavky

Vytvořte nebo se připojte k databázi na SQL Server, Azure SQL Database nebo SQL databázi ve Fabric. Použijte následující kroky k nastavení databáze se vzorovým AdventureWorks2025 schématem a připojovací řetězec si nechte na později.

Vytvoření databáze SQL

Vytvořte nebo se připojte k SQL databázi na jedné z následujících platforem:

Nastavení

Podle těchto kroků nakonfigurujte vývojové prostředí pro vývoj aplikace pomocí ovladače Pythonu mssql-python .

Poznámka:

Tento ovladač používá protokol Tabular Data Stream (TDS). SQL Server, SQL databáze ve Fabric a Azure SQL Database ve výchozím nastavení povolují TDS, takže není potřeba žádná další konfigurace.

Nainstalujte požadavky operačního systému

Nainstalujte požadavky specifické pro jednorázový operační systém. Uživatelé Windows mohou tento krok přeskočit. Pro úplné podrobnosti o platformě viz Instalace mssql-python.

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

Instalace balíčku mssql-python

mssql-python Získejte balíček z PyPI.

  1. Otevřete příkazový řádek v prázdném adresáři.

  2. Nainstalujte balíček mssql-python.

    pip install mssql-python
    

Nainstalovat balíček python-dotenv

Získejte balíček python-dotenv z PyPI.

Ve stejném adresáři nainstalujte python-dotenv balíček.

pip install python-dotenv

Kontrola nainstalovaných balíčků

Použijte pip list k ověření, že máte nainstalované požadované balíčky.

pip list

Spuštění kódu

Vytvoření nového souboru

  1. Vytvořte nový soubor s názvem app.py.

  2. Přidejte dokumentační řetězec modulu.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. Importujte balíčky, včetně mssql-python.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. mssql-python.connect Pomocí funkce se připojte k databázi SQL.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. V aktuálním adresáři vytvořte nový soubor s názvem .env.

  6. .env V souboru přidejte položku pro připojovací řetězec s názvem SQL_CONNECTION_STRING. Použijte jeden z následujících příkladů a nahraďte zástupné hodnoty svými skutečnými hodnotami.

    Pro Azure SQL Database nebo SQL databázi ve Fabric začněte s Microsoft Entra authentication:

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

    Pro lokální SQL Server během vývoje začněte s SQL autentizací:

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

    Caution

    Považujte to .env za místní rozvojovou pohodlnost, ne za mechanismus nasazení. Nikdy ho necommitujte, nikdy nepoužívejte tento SQL autentizační vzorek ve sdílených nebo produkčních prostředích a udržujte validaci certifikátů zapnutou mimo lokální vývoj.

    Použijte řetězce spojení k úpravě vzorku pro pojmenované instance, kontejnery nebo pokročilá nastavení. Pokud se připojujete k Azure SQL Database nebo SQL databázi ve Fabric, použijte Microsoft Entra autentizaci pro možnosti přihlášení bez hesla a interaktivní přihlášení. Pro širší pokyny ohledně tajemství a certifikátů viz nejlepší bezpečnostní postupy.

    Návod

    V systému macOS funguje ověřování pomocí Microsoft Entra jak s ActiveDirectoryInteractive, tak s ActiveDirectoryDefault. ActiveDirectoryInteractive vás vyzve k přihlášení při každém spuštění skriptu. Aby se zabránilo opakovaným výzvám k přihlášení, přihlaste se jednou pomocí příkazu Azure CLIaz login az login a použijte ActiveDirectoryDefault. ActiveDirectoryDefault znovu použije uložené přihlašovací údaje.

Provedení dotazu

Použijte dotazovací řetězec Transact-SQL (T-SQL) k provedení dotazu a analýze výsledků.

  1. Vytvořte proměnnou pro dotazovací řetězec T-SQL.

    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. Slouží cursor.execute k načtení sady výsledků z dotazu na databázi.

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

    Poznámka:

    Tato funkce přijímá jakýkoli dotaz a vrací množinu výsledků. Pro iteraci přes výslednou množinu použijte kurzor.fetchone().

  3. Použijte cursor.fetchall se smyčkou for k získání všech záznamů z databáze. Pak si vytiskněte záznamy.

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

  5. Otevřete terminál a otestujte aplikaci.

    python app.py
    

    Tady je očekávaný výstup.

    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
    

Vložte řádek jako transakci

Bezpečně spusťte INSERT příkaz a předejte parametry. Předávání parametrů jako hodnot chrání vaši aplikaci před útoky prostřednictvím injektáže SQL .

  1. Přidejte import randrange z knihovny random do horní části souboru app.py.

    from random import randrange
    
  2. Na konci app.py přidejte kód pro vygenerování náhodného čísla výrobku.

    productNumber = randrange(1000)
    

    Návod

    Náhodné číslo produktu snižuje pravděpodobnost chyby duplicitního klíče, pokud tento vzorek spustíte vícekrát.

  3. Vytvořte příkazový řetězec T-SQL.

    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. Proveďte příkaz pomocí cursor.execute.

    cursor.execute(
        SQL_STATEMENT,
        {
            'name': f'Example Product {productNumber}',
            'product_number': f'EXAMPLE-{productNumber}',
            'standard_cost': 100,
            'list_price': 200
        }
    )
    
  5. Načtěte jeden výsledek pomocí cursor.fetchone, vytiskněte jedinečný identifikátor výsledku a pak potvrďte operaci jako transakci pomocí connection.commit.

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

    Návod

    Volitelně můžete použít connection.rollback k vrácení transakce zpět.

  6. Zavřete kurzor a připojení pomocí cursor.close a connection.close.

    cursor.close()
    conn.close()
    
  7. app.py soubor a aplikaci znovu otestujte.

    python app.py
    

    Tady je očekávaný výstup.

    Inserted Product ID : 1001