Szybki start: nawiązywanie połączenia z bazą danych SQL z Jupyter Notebook

W tym szybkim starcie użyj Jupyter Notebook w Visual Studio Code, aby szybko uzyskać informacje biznesowe. Użyj sterownika mssql-python do Python, aby połączyć się z bazą danych SQL, odczytać dane, a następnie sformatować je do użycia w e-mailach, raportach i prezentacjach.

Sterownik mssql-python nie wymaga żadnych zależności zewnętrznych na maszynach z systemem Windows. Sterownik instaluje wszystko, czego potrzebuje w ramach pojedynczej pip instalacji, co pozwala na użycie najnowszej wersji sterownika dla nowych skryptów bez przerywania innych skryptów, których nie masz czasu na uaktualnienie i przetestowanie.

Dokumentacja mssql-python Kod źródłowy mssql-python Pakiet (PyPI)Visual Studio Code

Wymagania wstępne

  • Python 3.10 lub nowszy.

  • Jeśli nie masz jeszcze języka Python, zainstaluj środowisko uruchomieniowe języka Python i menedżera pakietów z python.org.

  • Nie chcesz używać własnego środowiska? Postępuj zgodnie z instrukcjami w sekcji Kontenery i programowanie lokalne, aby utworzyć odtwarzalne środowisko devcontainer lub GitHub Codespaces.

  • Visual Studio Code z następującymi rozszerzeniami:

  • Interfejs azure Command-Line (CLI) na potrzeby uwierzytelniania bez hasła w systemach macOS i Linux.

  • Jeśli jeszcze nie masz uvprogramu , postępuj zgodnie z instrukcjami instalacji.

  • Baza danych w programie SQL Server, usłudze Azure SQL Database lub bazie danych SQL w usłudze Fabric z przykładowym AdventureWorks2025 schematem i prawidłowymi parametrami połączenia.

Zainstaluj wymagania wstępne systemu operacyjnego

Zainstaluj jednorazowe wymagania wstępne dotyczące systemu operacyjnego. Użytkownicy Windows mogą pominąć ten krok. Pełne szczegóły dotyczące platformy można znaleźć w artykule Install mssql-python.

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

Tworzenie bazy danych SQL

Stwórz lub połącz się z bazą danych SQL na jednej z następujących platform:

Tworzenie projektu i uruchamianie kodu

Tworzenie nowego projektu

  1. Otwórz wiersz polecenia w katalogu deweloperów. Jeśli go nie masz, stwórz nowy katalog, np. python lub scripts. Unikaj folderów na OneDrive, ponieważ synchronizacja może zakłócać zarządzanie środowiskiem wirtualnym.

  2. Utwórz nowy projekt za pomocą polecenia uv.

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

Dodawanie zależności

W tym samym katalogu zainstaluj pakiety mssql-python, python-dotenv, rich, pandas i matplotlib. Następnie dodaj ipykernel i uv jako zależności deweloperskie. VS Code wymaga ipykernel do uruchamiania komórek notebooka oraz uv do zarządzania pakietami z poziomu komórek notebooka.

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

Uruchom program Visual Studio Code.

W tym samym katalogu uruchom następujące polecenie.

code .

Aktualizowanie pliku pyproject.toml

  1. pyproject.toml Otwórz plik w edytorze. Ten plik zawiera metadane Twojego projektu.

  2. Aktualizuj wartość description .

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Zapisz i zamknij plik.

Zapisz łańcuch połączeniowy

  1. .gitignore Otwórz plik i dodaj wykluczenie dla .env plików. Twój plik powinien być podobny do poniższego przykładu.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Zapisz i zamknij plik .gitignore.

  3. W bieżącym katalogu utwórz nowy plik o nazwie .env.

  4. W pliku .env dodaj wpis dla łańcucha połączenia o nazwie SQL_CONNECTION_STRING. Zastąp symbole zastępcze rzeczywistymi wartościami.

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

    Parametr połączenia zależy od typu bazy danych SQL, z którą się łączysz. Dla Azure SQL Database lub bazy danych SQL w usłudze Fabric użyj parametry połączenia ODBC z zakładki parametry połączenias i dostosuj typ uwierzytelniania do swojego scenariusza. Więcej informacji o składni parametry połączenia można znaleźć w artykule Connection strings for mssql-python.

    Wskazówka

    Zarówno ActiveDirectoryInteractive, jak i ActiveDirectoryDefault działają na systemie macOS do uwierzytelniania Microsoft Entra. ActiveDirectoryInteractive monituje o zalogowanie się przy każdym uruchomieniu skryptu. Aby uniknąć powtarzających się promptów logowania, zaloguj się raz za pomocą polecenia Azure CLIaz login i użyj ActiveDirectoryDefault. ActiveDirectoryDefault ponownie wykorzystuje zapisane dane uwierzytelniające.

Tworzenie notesu Jupyter

  1. Wybierz Plik, a następnie z listy Nowy plik i Jupyter Notebook. Otwiera się nowy notes.

  2. Wybierz pozycję Plik, a następnie pozycję Zapisz jako... i nadaj nowemu notesowi nazwę.

  3. Dodaj następujące importy w pierwszej komórce.

    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. Użyj przycisku + Markdown w górnej części notesu, aby dodać nową komórkę markdown.

  5. Dodaj następujący tekst do nowej komórki markdown.

    ## Define queries for use later
    
  6. Zaznacz znak wyboru na pasku narzędzi komórki lub użyj skrótów klawiaturowych Ctrl+Enter lub Shift+Enter w celu renderowania komórki markdown.

  7. Użyj przycisku + Kod w górnej części notesu, aby dodać nową komórkę kodu.

  8. Dodaj następujący kod do nowej komórki kodu.

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

Wyświetlanie wyników w tabeli

  1. Użyj przycisku + Markdown w górnej części notesu, aby dodać nową komórkę markdown.

  2. Dodaj następujący tekst do nowej komórki markdown.

    ## Print orders by customer and display in a table
    
  3. Zaznacz znak wyboru na pasku narzędzi komórki lub użyj skrótów klawiaturowych Ctrl+Enter lub Shift+Enter w celu renderowania komórki markdown.

  4. Użyj przycisku + Kod w górnej części notesu, aby dodać nową komórkę kodu.

  5. Dodaj następujący kod do nowej komórki kodu.

    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. Użyj przycisku Uruchom wszystko w górnej części notesu, aby uruchomić notes.

  7. Po wyświetleniu monitu wybierz jądro jupyter-notebook-qs .

Wyświetlanie wyników na wykresie

  1. Przejrzyj wyjście poprzedniej komórki. Powinna zostać wyświetlona tabela z trzema kolumnami i pięcioma wierszami.

  2. Użyj przycisku + Markdown w górnej części notesu, aby dodać nową komórkę markdown.

  3. Dodaj następujący tekst do nowej komórki markdown.

    ## Display spend by category in a horizontal bar chart
    
  4. Zaznacz znak wyboru na pasku narzędzi komórki lub użyj skrótów klawiaturowych Ctrl+Enter lub Shift+Enter w celu renderowania komórki markdown.

  5. Użyj przycisku + Kod w górnej części notesu, aby dodać nową komórkę kodu.

  6. Dodaj następujący kod do nowej komórki kodu.

    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. Użyj przycisku Wykonaj komórkę lub Ctrl+Alt+Enter do uruchomienia komórki.

  8. Przejrzyj wykres.