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 jednorazowe wymagania wstępne dotyczące systemu operacyjnego.

    apk add libtool krb5-libs krb5-dev
    

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. Plik pyproject.toml zawiera metadane projektu.

  2. Zaktualizuj opis, aby był bardziej opisowy.

    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. Plik powinien być podobny do tego przykładu. Pamiętaj, aby zapisać i zamknąć go po zakończeniu.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. W bieżącym katalogu utwórz nowy plik o nazwie .env.

  3. W pliku .env dodaj wpis dla łańcucha połączenia o nazwie SQL_CONNECTION_STRING. Zastąp przykład wartością rzeczywistych parametrów połączenia.

    SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
    

    Wskazówka

    Parametry połączenia używane w tym miejscu w dużej mierze zależą od typu bazy danych SQL, z którą nawiązujesz połączenie. Jeśli nawiązujesz połączenie z usługą Azure SQL Database lub bazą danych SQL w sieci szkieletowej, użyj parametrów połączenia ODBC z karty parametry połączenia. W zależności od scenariusza może być konieczne dostosowanie typu uwierzytelniania. Aby uzyskać więcej informacji na temat parametrów połączenia i ich składni, zobacz dokumentację składni parametrów połączenia.

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

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)
    

    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ę monitów logowania, zaloguj się raz za pomocą Azure CLI, uruchamiając az login, a następnie użyj ActiveDirectoryDefault, które ponownie wykorzystuje poświadczenia zapisane w pamięci podręcznej.

  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 dane wyjściowe ostatniej 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 wyniki. Uczyń ten notatnik swoim własnym.

Następne kroki

Wykorzystaj te artykuły, aby dalej budować: