Guida introduttiva: Connettersi utilizzando il driver mssql-python per Python

In questa guida introduttiva si connette uno script Python a un database creato e caricato con dati di esempio. Usare il mssql-python driver per Python per connettersi al database ed eseguire operazioni di base, ad esempio la lettura e la scrittura di dati.

Il mssql-python driver non richiede dipendenze esterne nei computer Windows. Il driver installa tutti gli elementi necessari con un'unica pip installazione, consentendo di usare la versione più recente del driver per i nuovi script senza interrompere altri script che non è necessario aggiornare e testare.

Usa l'esempio dell'autenticazione SQL locale in questo articolo solo per lo sviluppo locale su un'istanza di SQL Server che controlli. Per database SQL di Azure, i database SQL di Fabric, gli ambienti di sviluppo condivisi, la CI e le distribuzioni in produzione, iniziare con l'autenticazione Microsoft Entra o un altro flusso senza password.

Documentazione di mssql-python | mssql-python Codice sorgente | Pacchetto (PyPI) | Visual Studio Code

Prerequisiti

Crea o collegati a un database su SQL Server, database SQL di Azure o database SQL in Fabric. Usa i seguenti passaggi per configurare un database con lo AdventureWorks2025 schema di esempio e conserva la stringa di connessione per dopo.

Creare un database SQL

Crea o collegati a un database SQL su una delle seguenti piattaforme:

Configurazione

Seguire questa procedura per configurare l'ambiente di sviluppo per sviluppare un'applicazione usando il mssql-python driver Python.

Annotazioni

Questo driver utilizza il protocollo Tabular Data Stream (TDS ). SQL Server, database SQL in Fabric e database SQL di Azure abilitano TDS di default, quindi non è necessaria alcuna configurazione aggiuntiva.

Installare il pacchetto mssql-python

Ottieni il mssql-python pacchetto da PyPI.

  1. Aprire un prompt dei comandi in una directory vuota.

  2. Installare il pacchetto mssql-python.

    pip install mssql-python
    

Installa il pacchetto python-dotenv

Ottieni il pacchetto python-dotenv da PyPI.

  1. Nella stessa directory installare il python-dotenv pacchetto.

    pip install python-dotenv
    

Controllare i pacchetti installati

È possibile usare lo strumento da riga di comando PyPI per verificare che i pacchetti previsti siano installati.

  1. Controllare l'elenco dei pacchetti installati con pip list.

    pip list
    

Eseguire il codice

Creare un nuovo file

  1. Creare un file denominato app.py.

  2. Aggiungere una docstring del modulo.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. Importare pacchetti, incluso mssql-python.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. Usare la mssql-python.connect funzione per connettersi a un database SQL.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. Nella directory corrente creare un nuovo file denominato .env.

  6. All'interno del .env file aggiungere una voce per la stringa di connessione denominata SQL_CONNECTION_STRING. Usa uno dei seguenti esempi e sostituisci i segnaposto con i tuoi valori reali.

    Per database SQL di Azure o database SQL in Fabric, inizia con l'autenticazione Microsoft Entra:

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

    Per il SQL Server locale durante lo sviluppo, inizia con l'autenticazione SQL:

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

    Attenzione

    Trattalo .env come una comodità di sviluppo locale, non come un meccanismo di implementazione. Non effettuare mai un committ, non riutilizzare mai questo esempio di autenticazione SQL in ambienti condivisi o di produzione, e mantenere abilitata la validazione dei certificati al di fuori dello sviluppo locale.

    Usa stringhe di connessione per adattare il campione a istanze nominate, contenitori o impostazioni avanzate. Se ti connetti a database SQL di Azure o SQL database in Fabric, usa l'autenticazione Microsoft Entra per opzioni di accesso senza password e interattive. Per indicazioni più ampie su segreti e certificati, consulta le migliori pratiche di sicurezza.

Esegui una query

Usare una stringa di query SQL per eseguire una query e analizzare i risultati.

  1. Creare una variabile per la stringa di query 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. Utilizzare cursor.execute per recuperare un set di risultati da una query sul database.

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

    Annotazioni

    Questa funzione accetta essenzialmente qualsiasi query e restituisce un insieme di risultati. Per iterare sul set dei risultati, usa cursor.fetchone().

  3. Usare cursor.fetchall con un for ciclo per ottenere tutti i record dal database. Poi, stampa i documenti.

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

    Suggerimento

    In macOS, entrambi ActiveDirectoryInteractive e ActiveDirectoryDefault funzionano per l'autenticazione di Microsoft Entra. ActiveDirectoryInteractive richiede di accedere ogni volta che si esegue lo script. Per evitare ripetuti prompt di accesso, accedi una volta tramite la CLI di interfaccia della riga di comando di Azure eseguendo az login, poi usa ActiveDirectoryDefault, che riutilizza la credenziale memorizzata nella cache.

  5. Aprire un terminale e testare l'applicazione.

    python app.py
    

    Ecco l'output previsto.

    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
    

Inserire una riga come transazione

Eseguire un'istruzione INSERT in modo sicuro e passare parametri. Il passaggio di parametri come valori protegge l'applicazione da attacchi SQL injection .

  1. Aggiungere un'importazione per randrange dalla libreria random all'inizio di app.py.

    from random import randrange
    
  2. Alla fine di app.py aggiungere codice per generare un numero di prodotto casuale.

    productNumber = randrange(1000)
    

    Suggerimento

    La generazione di un numero di prodotto casuale qui garantisce che sia possibile eseguire questo esempio più volte.

  3. Creare una stringa di istruzione 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. Eseguire l'istruzione usando cursor.execute.

    cursor.execute(
       SQL_STATEMENT,
       {
          'name': f'Example Product {productNumber}',
          'product_number': f'EXAMPLE-{productNumber}',
          'standard_cost': 100,
          'list_price': 200
       }
    )
    
  5. Recuperare il singolo risultato usando cursor.fetchone, stampare l'identificatore univoco del risultato e quindi eseguire il commit dell'operazione come transazione usando connection.commit.

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

    Suggerimento

    Facoltativamente, è possibile usare connection.rollback per eseguire il rollback della transazione.

  6. Chiudere il cursore e la connessione usando cursor.close e connection.close.

    cursor.close()
    conn.close()
    
  7. Salvare il app.py file e testare di nuovo l'applicazione.

    python app.py
    

    Ecco l'output previsto.

    Inserted Product ID : 1001
    

Passaggi successivi

Usa questi articoli per continuare a costruire: