Condividi tramite


Avvio rapido: Connettersi a un database SQL da un notebook di Jupyter

In questa guida introduttiva si usa Jupyter Notebook in Visual Studio Code per ricavare rapidamente informazioni aziendali dettagliate. Usare il mssql-python driver per Python per connettersi al database SQL e leggere i dati che vengono quindi formattati per l'uso nei messaggi di posta elettronica, nelle presentazioni dei report e così via.

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.

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

Prerequisiti


Creare un database SQL

Questa guida introduttiva richiede lo schema AdventureWorks2025 Lightweight, su Microsoft SQL Server, nel database SQL di Fabric o nel database SQL di Azure.

Creare il progetto ed eseguire il codice

Creare un nuovo progetto

  1. Apri un prompt dei comandi nella directory di sviluppo. Se non è disponibile, creare una nuova directory denominata python, scriptse così via. Evitare cartelle in OneDrive, la sincronizzazione può interferire con la gestione dell'ambiente virtuale.

  2. Creare un nuovo progetto con uv.

    uv init jupyter-notebook-qs
    cd jupyter-notebook-qs
    

Aggiungere dipendenze

Nella stessa directory, installare i pacchetti mssql-python, python-dotenv, rich, pandas e matplotlib. Aggiungi quindi ipykernel e uv come dipendenze di sviluppo. VS Code richiede che ipykernel e uv siano aggiunti per poter interagire con uv dalle tue celle del notebook usando comandi come !uv add mssql_python.

uv add mssql_python dotenv rich pandas matplotlib
uv add --dev ipykernel
uv add --dev uv

Avviare Visual Studio Code

Nella stessa directory eseguire il comando seguente.

code .

Aggiornare pyproject.toml

  1. Pyproject.toml contiene i metadati per il progetto.

  2. Aggiornare la descrizione in modo che sia più descrittiva.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Salva e chiudi il file.

Salvare la stringa di connessione

  1. Aprire il .gitignore file e aggiungere un'esclusione per .env i file. Il file dovrebbe essere simile a questo esempio. Assicurati di salvarlo e chiuderlo quando hai finito.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Nella directory corrente creare un nuovo file denominato .env.

  3. All'interno del .env file aggiungere una voce per la stringa di connessione denominata SQL_CONNECTION_STRING. Sostituire l'esempio qui con il valore effettivo della stringa di connessione.

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

    Suggerimento

    La stringa di connessione usata qui dipende in gran parte dal tipo di database SQL a cui ci si connette. Se ci si connette a un database SQL di Azure o a un database SQL in Fabric, usare la stringa di connessione ODBC dalla scheda Stringhe di connessione. Potrebbe essere necessario modificare il tipo di autenticazione a seconda dello scenario. Per altre informazioni sulle stringhe di connessione e sulla relativa sintassi, vedere informazioni di riferimento sulla sintassi delle stringhe di connessione.

Creare un notebook di Jupyter

  1. Selezionare File, quindi Nuovo file e Jupyter Notebook dall'elenco. Verrà aperto un nuovo notebook.

  2. Selezionare File, quindi Salva con nome e assegnare un nome al nuovo notebook.

  3. Aggiungere le importazioni seguenti nella prima cella.

    from os import getenv
    from mssql_python import connect
    from dotenv import load_dotenv
    from rich.console import Console
    from rich.table import Table
    import pandas as pd
    import matplotlib.pyplot as plt
    
  4. Usare il pulsante + Markdown nella parte superiore del notebook per aggiungere una nuova cella markdown.

  5. Aggiungere il testo seguente alla nuova cella markdown.

    ## Define queries for use later
    
  6. Selezionare il segno di spunta nella barra degli strumenti delle celle o usare i Ctrl+Enter tasti di scelta rapida o Shift+Enter per eseguire il rendering della cella markdown.

  7. Usare il pulsante + Codice nella parte superiore del notebook per aggiungere una nuova cella di codice.

  8. Aggiungere il codice seguente alla nuova cella di codice.

    SQL_QUERY_ORDERS_BY_CUSTOMER = """
    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;
    """
    
    SQL_QUERY_SPEND_BY_CATEGORY = """
    select top 10
    pc.Name as ProductCategory,
    SUM(sod.OrderQty * sod.UnitPrice) as Spend
    from SalesLT.SalesOrderDetail sod
    inner join SalesLt.SalesOrderHeader soh on sod.salesorderid = soh.salesorderid
    inner join SalesLt.Product p on sod.productid = p.productid
    inner join SalesLT.ProductCategory pc on p.ProductCategoryID = pc.ProductCategoryID
    GROUP BY pc.Name
    ORDER BY Spend;
    """
    

Visualizzare i risultati in una tabella

  1. Usare il pulsante + Markdown nella parte superiore del notebook per aggiungere una nuova cella markdown.

  2. Aggiungere il testo seguente alla nuova cella markdown.

    ## Print orders by customer and display in a table
    
  3. Selezionare il segno di spunta nella barra degli strumenti delle celle o usare i Ctrl+Enter tasti di scelta rapida o Shift+Enter per eseguire il rendering della cella markdown.

  4. Usare il pulsante + Codice nella parte superiore del notebook per aggiungere una nuova cella di codice.

  5. Aggiungere il codice seguente alla nuova cella di codice.

    load_dotenv()
    with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore
        with conn.cursor() as cursor:
            cursor.execute(SQL_QUERY_ORDERS_BY_CUSTOMER)
            if cursor:
                table = Table(title="Orders by Customer")
                # https://rich.readthedocs.io/en/stable/appendix/colors.html
                table.add_column("Customer ID", style="bright_blue", justify="center")
                table.add_column("Company Name", style="bright_white", justify="left")
                table.add_column("Order Count", style="bold green", justify="right")
    
                records = cursor.fetchall()
    
                for r in records:
                    table.add_row(f"{r.CustomerID}",
                                    f"{r.CompanyName}", f"{r.OrderCount}")
    
                Console().print(table)
    

    Suggerimento

    Per usare l'autenticazione di Microsoft Entra in macOS, è necessario accedere tramite l'estensione Azure Repos in Visual Studio Code o eseguendo az login tramite l'interfaccia a riga di comando di Azure.

  6. Usare il pulsante Esegui tutto nella parte superiore del notebook per eseguire il notebook.

  7. Selezionare il kernel jupyter-notebook-qs quando richiesto.

Visualizzare i risultati in un grafico

  1. Esaminare l'output dell'ultima cella. Verrà visualizzata una tabella con tre colonne e cinque righe.

  2. Usare il pulsante + Markdown nella parte superiore del notebook per aggiungere una nuova cella markdown.

  3. Aggiungere il testo seguente alla nuova cella markdown.

    ## Display spend by category in a horizontal bar chart
    
  4. Selezionare il segno di spunta nella barra degli strumenti delle celle o usare i Ctrl+Enter tasti di scelta rapida o Shift+Enter per eseguire il rendering della cella markdown.

  5. Usare il pulsante + Codice nella parte superiore del notebook per aggiungere una nuova cella di codice.

  6. Aggiungere il codice seguente alla nuova cella di codice.

    with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore
        data = pd.read_sql_query(SQL_QUERY_SPEND_BY_CATEGORY, conn)
        # Set the style - use print(plt.style.available) to see all options
        plt.style.use('seaborn-v0_8-notebook')
        plt.barh(data['ProductCategory'], data['Spend'])
    
  7. Utilizzare il pulsante Esegui cella o Ctrl+Alt+Enter per eseguire la cella.

  8. Esamina i risultati. Rendi questo notebook tuo.

Passo successivo

Per altri esempi, visitare il mssql-python repository GitHub del driver per contribuire a idee o segnalare problemi.