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. Pomocí driveru mssql-python pro Python se připojujete k databázi a provádíte základní operace, jako je čtení a zapisování 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.

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.

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

    pip install python-dotenv
    

Kontrola nainstalovaných balíčků

Pomocí nástroje příkazového řádku PyPI můžete ověřit, že jsou nainstalované požadované balíčky.

  1. Zkontrolujte seznam nainstalovaných balíčků s příponou pip list.

    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_name>;Database=<database_name>;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_name>;UID=<username>;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.

Provedení dotazu

Pomocí řetězce dotazu SQL spusťte dotaz a parsujte výsledky.

  1. Vytvořte proměnnou pro řetězec dotazu 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 v podstatě 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.

    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. Abychom se vyhnuli opakovaným výzvám k přihlášení, přihlaste se jednou přes Azure CLI spuštěním az login, poté použijte ActiveDirectoryDefault, které znovu použije cacheované přihlašovací údaje.

  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

    Vygenerování náhodného čísla produktu tady zajistí, že tento vzorek můžete spustit několikrát.

  3. Vytvořte řetězec příkazu 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
    

Další kroky

Použijte tyto články k dalšímu budování:

  • Connection strings pro přizpůsobení vzorku pro lokální SQL Server, Azure SQL, kontejnery a pojmenované instance.
  • Správa spojení pro použití správců kontextu, poolování a nastavení připojení.
  • Řešení problémů s autentizací, certifikáty a připojením.