Quickstart: Verbinding maken met het mssql-python-stuurprogramma voor Python

In deze quickstart verbindt u een Python-script met een database die u hebt gemaakt en geladen met voorbeeldgegevens. Je gebruikt de mssql-python driver van Python om verbinding te maken met je database en basisbewerkingen uit te voeren, zoals het lezen en schrijven van data.

Het mssql-python stuurprogramma vereist geen externe afhankelijkheden op Windows-computers. Het stuurprogramma installeert alles wat het nodig heeft met één pip installatie, zodat u de nieuwste versie van het stuurprogramma voor nieuwe scripts kunt gebruiken zonder dat andere scripts die u niet hoeft te upgraden en te testen, worden onderbroken.

Gebruik het lokale SQL-authenticatievoorbeeld in dit artikel alleen voor lokale ontwikkeling tegen een SQL Server-instantie die jij beheert. Voor Azure SQL Database, SQL-database in Fabric, gedeelde ontwikkelomgevingen, CI en productie-implementaties, begin je met Microsoft Entra-authenticatie of een andere wachtwoordloze flow.

documentatie | mssql-python-broncode | Pakket (PyPI) | Visual Studio Code

Vereiste voorwaarden

Maak een database aan of maak verbinding met een database op SQL Server, Azure SQL Database of SQL-database in Fabric. Gebruik de volgende stappen om een database op te zetten met het AdventureWorks2025 voorbeeldschema en bewaar de verbindingsreeks voor later.

Een SQL-database maken

Maak een SQL-database aan of maak verbinding met een van de volgende platforms:

Configuratie

Volg deze stappen om uw ontwikkelomgeving te configureren voor het ontwikkelen van een toepassing met behulp van het mssql-python Python-stuurprogramma.

Opmerking

Deze driver gebruikt het Tabular Data Stream (TDS) protocol. SQL Server, SQL-database in Fabric en Azure SQL Database schakelen TDS standaard in, dus er is geen extra configuratie nodig.

Installatie-vereisten voor het besturingssysteem

Installeer eenmalige vereisten voor het besturingssysteem. Windows-gebruikers kunnen deze stap overslaan. Voor volledige platformdetails, zie Install mssql-python.

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

Het mssql-python-pakket installeren

Haal het mssql-python pakket op uit PyPI.

  1. Open een opdrachtprompt in een lege map.

  2. Installeer het mssql-python-pakket.

    pip install mssql-python
    

Installeer het python-dotenv-pakket

Haal het python-dotenv pakket van PyPI.

Installeer het python-dotenv pakket in dezelfde map.

pip install python-dotenv

Geïnstalleerde pakketten controleren

Gebruik deze pip list om te controleren of je beoogde pakketten zijn geïnstalleerd.

pip list

De code uitvoeren

Een nieuw bestand maken

  1. Maak een nieuw bestand met de naam app.py.

  2. Voeg een module-docstring toe.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. Importeer pakketten, waaronder mssql-python.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. Gebruik de mssql-python.connect functie om verbinding te maken met een SQL-database.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. Maak in de huidige map een nieuw bestand met de naam .env.

  6. Voeg in het .env bestand een vermelding toe voor de verbindingsreeks met de naam SQL_CONNECTION_STRING. Gebruik een van de volgende voorbeelden en vervang de tijdelijke aanduidingen door je werkelijke waarden.

    Voor Azure SQL Database of SQL database in Fabric, begin met Microsoft Entra-authenticatie:

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

    Voor lokale SQL Server tijdens ontwikkeling, begin met SQL-authenticatie:

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

    Waarschuwing

    Behandel .env het als een lokale ontwikkelingsgemak, niet als een implementatiemechanisme. Nooit committen, nooit deze SQL-authenticatievoorbeeld hergebruiken in gedeelde of productieomgevingen, en houd certificaatvalidatie ingeschakeld buiten lokale ontwikkeling.

    Gebruik Connection-strings om de sample aan te passen voor benoemde instanties, containers of geavanceerde instellingen. Als je verbinding maakt met Azure SQL Database of SQL Database in Fabric, gebruik dan Microsoft Entra-authenticatie voor wachtwoordloze en interactieve aanmeldopties. Voor bredere richtlijnen voor geheime en certificaten, zie Security best practices.

    Aanbeveling

    In macOS werken beide ActiveDirectoryInteractive en ActiveDirectoryDefault voor Microsoft Entra-verificatie. ActiveDirectoryInteractive u wordt gevraagd u aan te melden telkens wanneer u het script uitvoert. Om herhaalde aanmeldprompts te vermijden, log je één keer in met het Azure CLI-commandoaz login en gebruik ActiveDirectoryDefault. ActiveDirectoryDefault Hergebruikt de gecachte inloggegevens.

Een query uitvoeren

Gebruik een Transact-SQL (T-SQL) querystring om een query uit te voeren en de resultaten te analyseren.

  1. Maak een variabele aan voor de T-SQL querystring.

    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. Met cursor.execute haalt u een resultatenset op uit een query tegen de database.

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

    Opmerking

    Deze functie accepteert elke query en geeft een resultaatset terug. Om over de resultaatset te itereren, gebruik cursor.fetchone().

  3. Gebruik cursor.fetchall met een for lus om alle records uit de database op te halen. Druk daarna de records af.

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

  5. Open een terminal en test de toepassing.

    python app.py
    

    Dit is het verwachte resultaat.

    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
    

Een rij invoegen als transactie

Voer een INSERT instructie veilig uit en geef parameters door. Parameters doorgeven als waarden beschermen uw toepassing tegen SQL-injectieaanvallen .

  1. Voeg een import voor randrange uit de random-bibliotheek toe aan de bovenkant van app.py.

    from random import randrange
    
  2. Aan het einde van app.py code toevoegen om een willekeurig productnummer te genereren.

    productNumber = randrange(1000)
    

    Aanbeveling

    Een willekeurig productnummer verkleint de kans op een dubbele sleutelfout wanneer je dit voorbeeld meer dan eens uitvoert.

  3. Maak een T-SQL statementstring aan.

    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. Voer de instructie uit met behulp van cursor.execute.

    cursor.execute(
        SQL_STATEMENT,
        {
            'name': f'Example Product {productNumber}',
            'product_number': f'EXAMPLE-{productNumber}',
            'standard_cost': 100,
            'list_price': 200
        }
    )
    
  5. Haal het enkelvoudige resultaat op met behulp van cursor.fetchone, druk de unieke id van het resultaat af en voer vervolgens de bewerking door als een transactie met behulp van connection.commit.

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

    Aanbeveling

    Indien nodig, kunt u de connection.rollback transactie terugdraaien.

  6. Sluit de cursor en verbinding met cursor.close en connection.close.

    cursor.close()
    conn.close()
    
  7. Sla het app.py bestand op en test de toepassing opnieuw.

    python app.py
    

    Dit is het verwachte resultaat.

    Inserted Product ID : 1001