Rychlý start: Připojení k databázi SQL z poznámkového bloku Jupyter

V tomto rychlém startu použijte Jupyter Notebook ve Visual Studio Code k rychlému získání obchodních poznatků. Použijte mssql-python ovladač pro Python k připojení k vaší SQL databázi, přečtěte data a pak je naformátujte pro použití v e-mailech, reportech a prezentacích.

Ovladač mssql-python nevyžaduje žádné externí závislosti na počítačích s Windows. Ovladač nainstaluje všechno, co potřebuje, s jednou pip instalací, což vám umožní používat nejnovější verzi ovladače pro nové skripty bez přerušení jiných skriptů, které nemáte čas upgradovat a testovat.

Dokumentace mssql-python | | |

Požadavky

Nainstalujte požadavky pro operační systém

Nainstalujte požadavky specifické pro jednorázový operační systém. Uživatelé Windows mohou tento krok přeskočit. Pro úplné podrobnosti o platformě viz Instalace mssql-python.

apk add libtool krb5-libs krb5-dev libstdc++

Vytvoření databáze SQL

Vytvořte nebo se připojte k SQL databázi na jedné z následujících platforem:

Vytvoření projektu a spuštění kódu

Vytvoření nového projektu

  1. Otevřete příkazový řádek ve vývojovém adresáři. Pokud žádný nemáte, vytvořte nový adresář, například python nebo scripts. Vyhněte se složkám na OneDrive, protože synchronizace může narušit správu virtuálního prostředí.

  2. Vytvořte nový projekt pomocí uvpříkazu .

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

Přidejte závislosti

Ve stejném adresáři nainstalujte mssql-python, python-dotenv, rich, pandas a matplotlib balíčky. Pak přidejte ipykernel a uv jako vývojové závislosti. VS Code vyžaduje ipykernel ke spouštění buněk notebooku a uv ke správě balíčků přímo z buněk notebooku.

uv add mssql-python python-dotenv rich pandas matplotlib
uv add --dev ipykernel
uv add --dev uv

Spusťte Visual Studio Code

Ve stejném adresáři spusťte následující příkaz.

code .

Aktualizace pyproject.toml

  1. Otevřete soubor v editoru pyproject.toml . Tento soubor obsahuje metadata vašeho projektu.

  2. Aktualizujte hodnotu description .

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Uložte a zavřete soubor.

Uložte řetězec připojení

  1. .gitignore Otevřete soubor a přidejte vyloučení souborů.env. Váš soubor by měl být podobný následujícímu příkladu.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Uložte a zavřete .gitignore.

  3. V aktuálním adresáři vytvořte nový soubor s názvem .env.

  4. .env V souboru přidejte položku pro připojovací řetězec s názvem SQL_CONNECTION_STRING. Zástupné symboly nahraďte skutečnými hodnotami.

    SQL_CONNECTION_STRING="Server=<server>;Database=<database>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
    

    připojovací řetězec závisí na typu SQL databáze, ke které se připojujete. Pro Azure SQL Database nebo SQL databázi ve Fabric použijte ODBC připojovací řetězec z karty připojovací řetězecs a upravte typ autentizace pro váš scénář. Pro více informací o syntaxi připojovací řetězec viz Connection strings for mssql-python.

    Návod

    V systému macOS funguje ověřování pomocí Microsoft Entra jak s ActiveDirectoryInteractive, tak s ActiveDirectoryDefault. ActiveDirectoryInteractive vás vyzve k přihlášení při každém spuštění skriptu. Abychom se vyhnuli opakovaným výzvám k přihlášení, přihlaste se jednou příkazem Azure CLIaz login a použijte příkaz ActiveDirectoryDefault. ActiveDirectoryDefault znovu použije uložené přihlašovací údaje.

Vytvoření poznámkového bloku Jupyter

  1. V seznamu vyberte Soubor, pak Nový soubor a Jupyter Notebook . Otevře se nový poznámkový blok.

  2. Vyberte Soubor, pak Uložit jako... a pojmenujte nový poznámkový blok.

  3. Do první buňky přidejte následující importy.

    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. Pomocí tlačítka + Markdown v horní části poznámkového bloku přidejte novou buňku Markdownu.

  5. Do nové buňky markdownu přidejte následující text.

    ## Define queries for use later
    
  6. Vyberte zaškrtávací políčko na panelu nástrojů buňky nebo použijte klávesové zkratky Ctrl+Enter nebo Shift+Enter k vykreslení markdownové buňky.

  7. Pomocí tlačítka + Kód v horní části poznámkového bloku přidejte novou buňku kódu.

  8. Do nové buňky kódu přidejte následující kód.

    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 AS sod
    INNER JOIN SalesLT.SalesOrderHeader AS soh
        ON sod.SalesOrderID = soh.SalesOrderID
    INNER JOIN SalesLT.Product AS p
        ON sod.ProductID = p.ProductID
    INNER JOIN SalesLT.ProductCategory AS pc
        ON p.ProductCategoryID = pc.ProductCategoryID
    GROUP BY pc.Name
    ORDER BY Spend;
    """
    

Zobrazení výsledků v tabulce

  1. Pomocí tlačítka + Markdown v horní části poznámkového bloku přidejte novou buňku Markdownu.

  2. Do nové buňky markdownu přidejte následující text.

    ## Print orders by customer and display in a table
    
  3. Vyberte zaškrtávací políčko na panelu nástrojů buňky nebo použijte klávesové zkratky Ctrl+Enter nebo Shift+Enter k vykreslení markdownové buňky.

  4. Pomocí tlačítka + Kód v horní části poznámkového bloku přidejte novou buňku kódu.

  5. Do nové buňky kódu přidejte následující kód.

    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)
    
  6. Ke spuštění poznámkového bloku použijte tlačítko Spustit vše v horní části poznámkového bloku.

  7. Vyberte jádro jupyter-notebook-qs, když se zobrazí výzva.

Zobrazení výsledků v grafu

  1. Zkontrolujte výstup předchozí buňky. Měla by se zobrazit tabulka se třemi sloupci a pěti řádky.

  2. Pomocí tlačítka + Markdown v horní části poznámkového bloku přidejte novou buňku Markdownu.

  3. Do nové buňky markdownu přidejte následující text.

    ## Display spend by category in a horizontal bar chart
    
  4. Vyberte zaškrtávací políčko na panelu nástrojů buňky nebo použijte klávesové zkratky Ctrl+Enter nebo Shift+Enter k vykreslení markdownové buňky.

  5. Pomocí tlačítka + Kód v horní části poznámkového bloku přidejte novou buňku kódu.

  6. Do nové buňky kódu přidejte následující kód.

    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. Pomocí tlačítka Spustit buňku nebo Ctrl+Alt+Enter buňku spusťte.

  8. Prohlédněte si graf.