Del via


Hurtig introduktion: Opret forbindelse til en SQL-database i Fabric fra en Jupyter Notebook

I denne hurtige introduktion kan du bruge Jupyter Notebook i Visual Studio Code til hurtigt at udlede forretningsindsigt. Du bruger driveren mssql-python til Python til at oprette forbindelse til din SQL-database i Fabric og læse de data, der derefter formateres til brug i e-mails, rapporter, præsentationer osv.

Driveren mssql-python kræver ingen eksterne afhængigheder på Windows-maskiner. Driveren installerer alt, hvad den har brug for, med en enkelt pip installation, så du kan bruge den nyeste version af driveren til nye scripts uden at bryde andre scripts, som du ikke har tid til at opgradere og teste.

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

Forudsætninger


Opret projektet, og kør koden

Opret et nyt projekt

  1. Åbn en kommandoprompt i din udviklingsmappe. Hvis du ikke har en, skal du oprette en ny mappe kaldet python, scriptsosv. Undgå mapper på dit OneDrive, synkroniseringen kan forstyrre administrationen af dit virtuelle miljø.

  2. Opret et nyt projekt med uv.

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

Tilføj afhængigheder

I samme mappe skal du installere pakkerne mssql-python, python-dotenv, richpandas, og matplotlib . Tilføj derefter ipykernel og uv som udviklerafhængigheder. VS Code kræver ipykernel og uv tilføjes for at kunne interagere med uv fra dine notebook-celler ved hjælp af 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

Kør følgende kommando i samme mappe.

code .

Opdater pyproject.toml

  1. pyproject.toml indeholder metadataene for dit projekt.

  2. Opdater beskrivelsen, så den er mere beskrivende.

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

Gem forbindelsesstrengen

  1. Åbn filen, .gitignore og tilføj en udeladelse for .env filer. Din fil skal ligne dette eksempel. Sørg for at gemme og lukke den, når du er færdig.

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

  3. Tilføj .env en post for din forbindelsesstreng med navnet SQL_CONNECTION_STRING. Erstat eksemplet her med din faktiske forbindelsesstrengværdi.

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

    Tips

    For SQL-database i Fabric skal du bruge ODBC-forbindelsesstrengen fra fanen Forbindelsesstrenge uden DRIVER-oplysningerne .

Opret en Jupyter Notebook

  1. Vælg Filer, derefter Ny fil og Jupyter Notebook på listen. En ny notesbog åbnes.

  2. Vælg Filer, derefter Gem som..., og giv din nye notesbog et navn.

  3. Tilføj følgende importer i den første celle.

    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. Brug knappen + Markdown øverst i notesbogen til at tilføje en ny markdown-celle.

  5. Føj følgende tekst til den nye markdown-celle.

    ## Define queries for use later
    
  6. Markér fluebenet på celleværktøjslinjen, eller brug tastaturgenvejene Ctrl+Enter eller Shift+Enter til at gengive markdown-cellen.

  7. Brug knappen + Kode øverst i notesbogen til at tilføje en ny kodecelle.

  8. Føj følgende kode til den nye kodecelle.

    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 tabel

  1. Brug knappen + Markdown øverst i notesbogen til at tilføje en ny markdown-celle.

  2. Føj følgende tekst til den nye markdown-celle.

    ## Print orders by customer and display in a table
    
  3. Markér fluebenet på celleværktøjslinjen, eller brug tastaturgenvejene Ctrl+Enter eller Shift+Enter til at gengive markdown-cellen.

  4. Brug knappen + Kode øverst i notesbogen til at tilføje en ny kodecelle.

  5. Føj følgende kode til den nye kodecelle.

    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 til ActiveDirectoryDefault Microsoft Entra-autentificering. ActiveDirectoryInteractive opfordrer dig til at logge ind hver gang, du kører scriptet. For at undgå gentagne login-prompts, log ind én gang via Azure CLI ved at køre az login, og brug ActiveDirectoryDefaultderefter , som genbruger den cachede legitimationsoplysninger.

  1. Brug knappen Kør alle øverst i notesbogen til at køre notesbogen.

  2. Vælg jupyter-notebook-qs-kernen , når du bliver bedt om det.

Vise resultater i et diagram

  1. Gennemse outputtet af den sidste celle. Du bør se en tabel med tre kolonner og fem rækker.

  2. Brug knappen + Markdown øverst i notesbogen til at tilføje en ny markdown-celle.

  3. Føj følgende tekst til den nye markdown-celle.

    ## Display spend by category in a horizontal bar chart
    
  4. Markér fluebenet på celleværktøjslinjen, eller brug tastaturgenvejene Ctrl+Enter eller Shift+Enter til at gengive markdown-cellen.

  5. Brug knappen + Kode øverst i notesbogen til at tilføje en ny kodecelle.

  6. Føj følgende kode til den nye kodecelle.

    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. Brug knappen Udfør celle eller Ctrl+Alt+Enter til at køre cellen.

  8. Gennemse resultaterne. Gør denne notesbog til din egen.

Næste trin

Besøg driverens mssql-python GitHub-lager for at få flere eksempler for at bidrage med ideer eller rapportere problemer.