Snabbstart: Ansluta med drivrutinen mssql-python för Python

I den här snabbstarten ansluter du ett Python-skript till en databas som du skapade och läste in med exempeldata. Du använder mssql-python drivrutinen för Python för att ansluta till databasen och utföra grundläggande åtgärder, till exempel att läsa och skriva data.

Drivrutinen mssql-python kräver inga externa beroenden på Windows-datorer. Drivrutinen installerar allt som behövs med en enda pip installation, så att du kan använda den senaste versionen av drivrutinen för nya skript utan att bryta andra skript som du inte har tid att uppgradera och testa.

Använd exemplet med lokal SQL-autentisering i denna artikel endast för lokal utveckling mot en SQL Server-instans som du kontrollerar. För Azure SQL Database, SQL-databas i Fabric, delade utvecklingsmiljöer, CI och produktionsdistributioner, börja med Microsoft Entra-autentisering eller ett annat lösenordslöst flöde.

mssql-python-dokumentation | mssql-python-källkod | Paket (PyPI) | Visual Studio Code

Förutsättningar

Skapa eller koppla till en databas på SQL Server, Azure SQL Database eller SQL-databas i Fabric. Använd följande steg för att skapa en databas med exempelschemat AdventureWorks2025 och spara reťazec pripojenia till senare.

Skapa en SQL-databas

Skapa eller koppla till en SQL-databas på en av följande plattformar:

Inställningar

Följ de här stegen för att konfigurera utvecklingsmiljön för att utveckla ett program med hjälp av Python-drivrutinen mssql-python .

Anmärkning

Denna drivrutin använder Tabular Data Stream (TDS)- protokollet. SQL Server, SQL-databas i Fabric och Azure SQL Database aktiverar TDS som standard, så ingen extra konfiguration behövs.

Installera mssql-python-paketet

mssql-python Hämta paketet från PyPI.

  1. Öppna en kommandotolk i en tom katalog.

  2. Installera mssql-python-paketet.

    pip install mssql-python
    

Installera python-dotenv-paketet

Hämta paketet python-dotenv från PyPI.

  1. Installera paketet i python-dotenv samma katalog.

    pip install python-dotenv
    

Kontrollera installerade paket

Du kan använda kommandoradsverktyget PyPI för att kontrollera att dina avsedda paket är installerade.

  1. Kontrollera listan över installerade paket med pip list.

    pip list
    

Kör koden

Skapa en ny fil

  1. Skapa en ny fil med namnet app.py.

  2. Lägg till en moduldokumentation.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. Importera paket, inklusive mssql-python.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. mssql-python.connect Använd funktionen för att ansluta till en SQL-databas.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. I den aktuella katalogen skapar du en ny fil med namnet .env.

  6. I .env-filen lägger du till ett inlägg för anslutningssträngen med namnet SQL_CONNECTION_STRING. Använd ett av följande exempel och ersätt platshållarna med dina faktiska värden.

    För Azure SQL Database eller SQL database in Fabric, börja med Microsoft Entra-autentisering:

    SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
    

    För lokal SQL Server under utveckling, börja med SQL-autentisering:

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

    Caution

    Behandla .env det som en lokal utvecklingsbekvämlighet, inte som en distributionsmekanism. Checka aldrig in det, återanvänd aldrig det här exemplet på SQL-autentisering i delade miljöer eller produktionsmiljöer, och låt certifikatvalidering vara aktiverad utanför lokal utveckling.

    Använd anslutningssträngar för att anpassa provet för namngivna instanser, behållare eller avancerade inställningar. Om du ansluter till Azure SQL Database eller SQL Database i Fabric, använd Microsoft Entra-autentisering för lösenordslösa och interaktiva inloggningsalternativ. För bredare vägledning om hemligheter och certifikat, se bästa praxis för säkerhet.

Utföra en fråga

Använd en SQL-frågesträng för att köra en fråga och parsa resultatet.

  1. Skapa en variabel för SQL-frågesträngen.

    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. Använd cursor.execute för att hämta en resultatuppsättning från en fråga mot databasen.

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

    Anmärkning

    Denna funktion accepterar i princip vilken fråga som helst och returnerar en resultatmängd. För att iterera över resultatuppsättningen, använd cursor.fetchone().

  3. Använd cursor.fetchall med en for loop för att hämta alla poster från databasen. Skriv sedan ut handlingarna.

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

    Tips/Råd

    På macOS fungerar både ActiveDirectoryInteractive och ActiveDirectoryDefault för Microsoft Entra-autentisering. ActiveDirectoryInteractive uppmanar dig att logga in varje gång du kör skriptet. För att undvika upprepade inloggningspromptar, logga in en gång via Azure CLI genom att köra az login, och använd ActiveDirectoryDefaultsedan , vilket återanvänder den cachade legitimationen.

  5. Öppna en terminal och testa programmet.

    python app.py
    

    Här är de förväntade resultaten.

    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
    

Infoga en rad som en transaktion

Kör en instruktion på ett INSERT säkert sätt och skicka parametrar. Att skicka parametrar som värden skyddar ditt program från SQL-inmatningsattacker .

  1. Lägg till en import för randrange från random biblioteket överst i app.py.

    from random import randrange
    
  2. I slutet av app.py lägg till kod för att generera ett slumpmässigt produktnummer.

    productNumber = randrange(1000)
    

    Tips/Råd

    Om du genererar ett slumpmässigt produktnummer här kan du köra det här exemplet flera gånger.

  3. Skapa en SQL-instruktionssträng.

    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. Kör instruktionen med cursor.execute.

    cursor.execute(
       SQL_STATEMENT,
       {
          'name': f'Example Product {productNumber}',
          'product_number': f'EXAMPLE-{productNumber}',
          'standard_cost': 100,
          'list_price': 200
       }
    )
    
  5. Hämta det enskilda resultatet med , cursor.fetchoneskriv ut resultatets unika identifierare och checka sedan in åtgärden som en transaktion med hjälp av connection.commit.

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

    Tips/Råd

    Du kan också använda connection.rollback för att återställa transaktionen.

  6. Stäng markören och anslutningen med hjälp av cursor.close och connection.close.

    cursor.close()
    conn.close()
    
  7. app.py filen och testa programmet igen.

    python app.py
    

    Här är de förväntade resultaten.

    Inserted Product ID : 1001
    

Nästa steg

Använd dessa artiklar för att fortsätta bygga:

  • Anslutningssträngar för att anpassa exemplet för lokal SQL Server, Azure SQL, containrar och namngivna instanser.
  • Anslutningshantering för att använda kontexthanterare, pooling och anslutningsinställningar.
  • Felsökning för att diagnostisera autentiserings-, certifikat- och anslutningsproblem.