Rövid útmutató: Csatlakozás SQL-adatbázishoz Jupyter Notebookból

Ebben a gyorsindításban használd a Jupyter Notebook-ot a Visual Studio Code-ban, hogy gyorsan lehessen vezetni üzleti betekintéseket. Használd a mssql-python Python illesztőprogramot, hogy csatlakozz az SQL adatbázisodhoz, olvasd el az adatokat, majd formázd azokat e-mailekhez, jelentésekhez és prezentációkhoz.

Az mssql-python illesztőprogram nem igényel külső függőségeket a Windows rendszerű gépeken. Az illesztőprogram egyetlen pip telepítéssel mindent telepít, amire szüksége van, így az illesztőprogram legújabb verzióját használhatja az új szkriptekhez anélkül, hogy megszegi azokat a szkripteket, amelyek frissítésére és tesztelésére nincs ideje.

az mssql-python dokumentációja | mssql-python forráskód | Csomag (PyPI) | Visual Studio Code

Előfeltételek

Az operációs rendszer telepítésének előfeltételei

Egyszeri operációs rendszerspecifikus előfeltételek telepítése. A Windows felhasználók ezt a lépést kihagyhatják. A platform teljes részleteiért lásd: Install mssql-python.

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

SQL-adatbázis létrehozása

Létrehozni vagy csatlakozni SQL adatbázishoz az alábbi platformok egyikén:

A projekt létrehozása és a kód futtatása

Új projekt létrehozása

  1. Nyisson meg egy parancssort a fejlesztői címtárban. Ha nincs ilyened, hozz létre egy új könyvtárat, például python vagy scripts. Kerüld a mappákat a OneDrive-on, mert a szinkronizáció zavarhatja a virtuális környezet kezelését.

  2. Hozzon létre egy új projektet a uv segítségével.

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

Függőségek hozzáadása

Ugyanabban a könyvtárban telepítse a mssql-python, python-dotenv, rich, pandasés matplotlib csomagokat. Ezután add hozzá a ipykernel és uv mint fejlesztési függőségek. A VS Code-nak ipykernel szükséges a jegyzetfüzetcellák futtatásához, és uv a csomagoknak a jegyzetfüzetcellákból történő kezeléséhez.

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

Indítsa el a Visual Studio Code-ot

Ugyanabban a könyvtárban futtassa a következő parancsot.

code .

Pyproject.toml frissítése

  1. Nyissa meg a pyproject.toml fájlt a szerkesztőben. Ez a fájl tartalmazza a projekted metaadatait.

  2. Frissítsd az description értéket.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Mentse és zárja be a fájlt.

A kapcsolati sztring mentése

  1. Nyissa meg a .gitignore fájlt, és adjon hozzá kizárást a fájlokhoz .env . A fájlodnak hasonlónak kell lennie a következő példához.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Mentés és bezárás .gitignore.

  3. Az aktuális könyvtárban hozzon létre egy új fájlt..env

  4. A .env fájlban adjon hozzá egy bejegyzést a kapcsolati karakterlánchoz, a következő névvel: SQL_CONNECTION_STRING. Cserélje le a helyőrzőket a tényleges értékekre.

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

    A kapcsolati karakterlánc attól függ, milyen típusú SQL adatbázishoz csatlakozol. Azure SQL Database vagy a Fabricben található SQL-adatbázis esetén használd a Kapcsolati sztringek lapról származó ODBC-kapcsolati sztringet, és állítsd be a hitelesítési típust az adott forgatókönyvhöz. További információért a kapcsolati karakterlánc szintaxisáról lásd: Connection strings for mssql-python.

    Jótanács

    macOS rendszeren mind a ActiveDirectoryInteractive, mind a ActiveDirectoryDefault használható a Microsoft Entra-hitelesítéshez. ActiveDirectoryInteractive minden alkalommal, amikor futtatja a szkriptet, arra kéri, hogy jelentkezzen be. Az ismétlődő bejelentkezési promptok elkerülése érdekében jelentkezzen be egyszer az Azure CLIaz login parancsral, és használd ActiveDirectoryDefault. ActiveDirectoryDefault újrahasználja a gyorsítótárban tárolt hitelesítő adatot.

Jupyter-jegyzetfüzet létrehozása

  1. Válassza a Fájl, majd az Új fájl és a Jupyter Notebook lehetőséget a listából. Megnyílik egy új jegyzetfüzet.

  2. Válassza a Fájl, majd a Mentés másként... lehetőséget, és adjon nevet az új jegyzetfüzetnek.

  3. Adja hozzá az alábbi importálásokat az első cellához.

    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. Új Markdown-cella hozzáadásához használja a jegyzetfüzet tetején található + Markdown gombot.

  5. Adja hozzá a következő szöveget az új Markdown-cellához.

    ## Define queries for use later
    
  6. Válassza ki a pipát a cella eszköztárán, vagy használja a billentyűparancsokat Ctrl+Enter vagy Shift+Enter a markdown cella rendereléséhez.

  7. Új kódcella hozzáadásához használja a jegyzetfüzet tetején található + Kód gombot.

  8. Adja hozzá a következő kódot az új kódcellához.

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

Eredmények megjelenítése táblázatban

  1. Új Markdown-cella hozzáadásához használja a jegyzetfüzet tetején található + Markdown gombot.

  2. Adja hozzá a következő szöveget az új Markdown-cellához.

    ## Print orders by customer and display in a table
    
  3. Válassza ki a pipát a cella eszköztárán, vagy használja a billentyűparancsokat Ctrl+Enter vagy Shift+Enter a markdown cella rendereléséhez.

  4. Új kódcella hozzáadásához használja a jegyzetfüzet tetején található + Kód gombot.

  5. Adja hozzá a következő kódot az új kódcellához.

    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. A jegyzetfüzet futtatásához használja a jegyzetfüzet tetején található Összes futtatása gombot.

  7. Amikor a rendszer kéri, válassza ki a jupyter-notebook-qs kernelt.

Eredmények megjelenítése diagramon

  1. Nézd át az előző cella kimenetét. Látnia kell egy három oszlopból és öt sorból álló táblázatot.

  2. Új Markdown-cella hozzáadásához használja a jegyzetfüzet tetején található + Markdown gombot.

  3. Adja hozzá a következő szöveget az új Markdown-cellához.

    ## Display spend by category in a horizontal bar chart
    
  4. Válassza ki a pipát a cella eszköztárán, vagy használja a billentyűparancsokat Ctrl+Enter vagy Shift+Enter a markdown cella rendereléséhez.

  5. Új kódcella hozzáadásához használja a jegyzetfüzet tetején található + Kód gombot.

  6. Adja hozzá a következő kódot az új kódcellához.

    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. Használja a Cella végrehajtása gombot, vagy Ctrl+Alt+Enter futtassa a cellát.

  8. Nézd át a táblázatot.