Udostępnij za pośrednictwem


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

W tym krótkim przewodniku użyjesz notesu Jupyter Notebook w programie Visual Studio Code, aby szybko uzyskać wgląd w dane biznesowe. Używasz sterownika języka Python mssql-python, aby połączyć się z bazą danych SQL i odczytujesz dane, które są następnie formatowane do użycia w wiadomościach e-mail, raportach, prezentacjach itp.

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

    • 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? Otwórz jako devcontainer przy użyciu usługi 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

Ten szybki start wymaga schematu AdventureWorks2025 Lightweight w Microsoft SQL Server, bazie danych SQL w Fabric lub Azure SQL Database.

Tworzenie projektu i uruchamianie kodu

Tworzenie nowego projektu

  1. Otwórz wiersz polecenia w katalogu deweloperów. Jeśli go nie masz, utwórz nowy katalog o nazwie python, scriptsitp. Unikaj folderów w usłudze OneDrive, 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. Program VS Code wymaga dodania elementów ipykernel i uv, aby móc korzystać z uv wewnątrz komórek notesu przy użyciu poleceń takich jak !uv add mssql_python.

uv add mssql_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 pośrednictwem interfejsu wiersza polecenia platformy Azure, uruchamiając az login, a następnie użyj ActiveDirectoryDefault, które ponownie wykorzystuje buforowane poświadczenia.

  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ępny krok

Odwiedź repozytorium GitHub sterowników mssql-python, aby uzyskać więcej przykładów, wnieść pomysły lub zgłaszać problemy.