Delen via


Quickstart: Verbinding maken met het pymssql-stuurprogramma voor Python

In deze quickstart verbindt u een Python-script met een database die u hebt gemaakt en geladen met voorbeeldgegevens. U gebruikt het pymssql stuurprogramma voor Python om verbinding te maken met uw database en basisbewerkingen uit te voeren, zoals het lezen en schrijven van gegevens.

documentatie | pymssql-broncode | Pakket (PyPi)

Vereiste voorwaarden

  • Python 3

    • Als u Python nog niet hebt, installeert u de Python-runtime en PyPI-pakketbeheer (Python Package Index) vanuit python.org.

    • Wilt u liever uw eigen omgeving niet gebruiken? Open als een devcontainer met GitHub Codespaces.

  • pymssql pakket van PyPI.

  • Een database op SQL Server, Azure SQL Database of SQL Database in Fabric met het AdventureWorks2022 voorbeeldschema en een geldige verbindingsreeks.

Installeren

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

Opmerking

Dit stuurprogramma maakt gebruik van het TDS-protocol , dat standaard is ingeschakeld in SQL Server, SQL Database in Fabric en Azure SQL Database. Er is geen extra configuratie vereist.

Het pymssql-pakket installeren

Haal het pymssql pakket op uit PyPI.

  1. Open een opdrachtprompt in een lege map.

  2. Installeer het pymssql-pakket.

    pip install pymssql
    

Geïnstalleerde pakketten controleren

U kunt het opdrachtregelprogramma PyPI gebruiken om te controleren of de beoogde pakketten zijn geïnstalleerd.

  1. Controleer de lijst met geïnstalleerde pakketten met pip list.

    pip list
    

Een SQL-database maken

Voor deze quickstart is het Lightweight-schema AdventureWorks2022 vereist in Microsoft SQL Server, SQL Database in Fabric of Azure SQL Database.

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 pymssql
    """
    
  3. Importeer pakketten, waaronder pymssql.

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

    load_dotenv()
    conn = connect(getenv("SQL_SERVER"),getenv("SQL_USER"),getenv("SQL_PASSWORD"),getenv("SQL_DATABASE"))
    
  5. Maak in de huidige map een nieuw bestand met de naam *.env.

  6. Voeg in het *.env bestand vermeldingen toe voor de verbindingsreekswaarden met de naam SQL_SERVER, SQL_USER, SQL_PASSWORD. SQL_DATABASE Vervang hier de tijdelijke aanduidingen door de werkelijke verbindingsreekswaarden.

    SQL_SERVER="<server_name>"
    SQL_USER="<sql_user_name>"
    SQL_PASSWORD="<sql_user_password>"
    SQL_DATABASE="<sql_database>"
    

    Aanbeveling

    De hier gebruikte verbindingsreeks is grotendeels afhankelijk van het type SQL-database waarmee u verbinding maakt. Zie de naslaginformatie over de syntaxis van de verbindingsreeks voor meer informatie over verbindingsreeksen en de bijbehorende syntaxis.

Een query uitvoeren

Gebruik een SQL-queryreeks om een query uit te voeren en de resultaten te parseren.

  1. Maak een variabele voor de SQL-queryreeks.

    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(as_dict=True)
    cursor.execute(SQL_QUERY)
    

    Opmerking

    Deze functie accepteert in wezen elke query en retourneert een resultatenset, die kan worden gecureerd met het gebruik van cursor.fetchone().

  3. Gebruik een foreach lus om alle records uit de database op te halen. Druk vervolgens de records af.

    for r in cursor:
        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

    Als u hier een willekeurig productnummer genereert, zorgt u ervoor dat u dit voorbeeld meerdere keren kunt uitvoeren.

  3. Maak een SQL-instructietekenreeks.

    SQL_STATEMENT = """
    INSERT SalesLT.Product (
    Name,
    ProductNumber,
    StandardCost,
    ListPrice,
    SellStartDate
    ) OUTPUT INSERTED.ProductID
    VALUES (%s, %s, %s, %s, CURRENT_TIMESTAMP)
    """
    
  4. Voer de instructie uit met behulp van cursor.execute.

    cursor.execute(
        SQL_STATEMENT,
        (
            f'Example Product {productNumber}',
            f'EXAMPLE-{productNumber}',
            100,
            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

    U kunt optioneel connection.rollback gebruiken om de transactie terug te draaien.

  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
    

Volgende stap

Ga naar de GitHub-opslagplaats van het pymssql stuurprogramma voor meer voorbeelden, om ideeën bij te dragen of problemen te rapporteren.