Hurtiginnføring: Koble til en SQL-database i Fabric fra en Jupyter Notebook

I denne hurtigstarten bruker du Jupyter Notebook i Visual Studio Code til raskt å utlede forretningsinnsikt. Du bruker driveren mssql-python for Python til å koble til SQL-databasen din i Fabric og lese dataene som deretter formateres for bruk i e-poster, rapporter, presentasjoner osv.

Driveren mssql-python krever ingen eksterne avhengigheter på Windows-maskiner. Driveren installerer alt den trenger med en enkelt pip installasjon, slik at du kan bruke den nyeste versjonen av driveren for nye skript uten å bryte andre skript som du ikke har tid til å oppgradere og teste.

mssql-python-dokumentasjon | mssql-python kildekode | Pakke (PyPi) | Visual Studio-kode

Forutsetninger


Opprett prosjektet og kjør koden

Opprette et nytt prosjekt

  1. Åpne en ledetekst i utviklingskatalogen. Hvis du ikke har en, opprett en ny katalog kalt python, scripts, etc. Unngå mapper på OneDrive, synkroniseringen kan forstyrre administrasjonen av det virtuelle miljøet ditt.

  2. Opprett et nytt prosjekt med uv.

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

Legge til avhengigheter

I samme katalog installerer du pakkene mssql-python, python-dotenv, richpandas, , og matplotlib . Deretter legger du til ipykernel og uv som utvikleravhengigheter. VS Code krever ipykernel og uv legges til for å kunne samhandle med uv fra notatblokkcellene ved hjelp av kommandoer som !uv add mssql_python.

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

Start Visual Studio Code

Kjør følgende kommando i samme katalog.

code .

Oppdater pyproject.toml

  1. pyproject.toml inneholder metadataene for prosjektet ditt.

  2. Oppdater beskrivelsen slik at den blir mer beskrivende.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Lagre og lukk filen.

Lagre tilkoblingsstrengen

  1. Åpne .gitignore filen og legg til en ekskludering for .env filer. Filen din skal ligne på dette eksemplet. Sørg for å lagre og lukke den når du er ferdig.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. I gjeldende katalog oppretter du en ny fil med navnet .env.

  3. I .env filen legger du til en oppføring for tilkoblingsstrengen med navnet SQL_CONNECTION_STRING. Erstatt eksemplet her med den faktiske tilkoblingsstrengverdien.

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

    Tips

    For SQL-database i Fabric bruker du ODBC-tilkoblingsstrengen fra kategorien tilkoblingsstrenger uten DRIVER-informasjonen .

Opprette en Jupyter-notatblokk

  1. Velg Fil, deretter Ny fil og Jupyter Notebook fra listen. En ny notatblokk åpnes.

  2. Velg Fil, deretter Lagre som..., og gi den nye notatblokken et navn.

  3. Legg til følgende importer i den første cellen.

    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. Bruk + Markdown-knappen øverst i notatblokken til å legge til en ny markdown-celle.

  5. Legg til følgende tekst i den nye markdown-cellen.

    ## Define queries for use later
    
  6. Merk merket på celleverktøylinjen, eller bruk hurtigtastene Ctrl+Enter eller Shift+Enter til å gjengi markdown-cellen.

  7. Bruk + Kode-knappen øverst i notatblokken til å legge til en ny kodecelle.

  8. Legg til følgende kode i den nye kodecellen.

    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;
    """
    

Vise resultater i en tabell

  1. Bruk + Markdown-knappen øverst i notatblokken til å legge til en ny markdown-celle.

  2. Legg til følgende tekst i den nye markdown-cellen.

    ## Print orders by customer and display in a table
    
  3. Merk merket på celleverktøylinjen, eller bruk hurtigtastene Ctrl+Enter eller Shift+Enter til å gjengi markdown-cellen.

  4. Bruk + Kode-knappen øverst i notatblokken til å legge til en ny kodecelle.

  5. Legg til følgende kode i den nye kodecellen.

    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)
    

Tips

På macOS fungerer begge ActiveDirectoryInteractive for ActiveDirectoryDefault Microsoft Entra-autentisering. ActiveDirectoryInteractive Ber deg logge inn hver gang du kjører skriptet. For å unngå gjentatte påloggingsmeldinger, logg inn én gang via Azure CLI ved å kjøre az login, og bruk ActiveDirectoryDefaultderetter , som gjenbruker den bufrede legitimasjonen.

  1. Bruk Kjør alle-knappen øverst i notatblokken til å kjøre notatblokken.

  2. Velg jupyter-notebook-qs-kjernen når du blir bedt om det.

Vise resultater i et diagram

  1. Se gjennom utdataene fra den siste cellen. Du skal se en tabell med tre kolonner og fem rader.

  2. Bruk + Markdown-knappen øverst i notatblokken til å legge til en ny markdown-celle.

  3. Legg til følgende tekst i den nye markdown-cellen.

    ## Display spend by category in a horizontal bar chart
    
  4. Merk merket på celleverktøylinjen, eller bruk hurtigtastene Ctrl+Enter eller Shift+Enter til å gjengi markdown-cellen.

  5. Bruk + Kode-knappen øverst i notatblokken til å legge til en ny kodecelle.

  6. Legg til følgende kode i den nye kodecellen.

    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. Bruk Utfør celle-knappen eller Ctrl+Alt+Enter til å kjøre cellen.

  8. Se gjennom resultatene. Gjør denne notatboken til din egen.

Neste trinn

Gå til GitHub-repositoriet for driveren mssql-python for flere eksempler, for å bidra med ideer eller rapportere problemer.