Schnellstart: Herstellen einer Verbindung mit einer SQL-Datenbank aus einem Jupyter-Notizbuch

In diesem Quickstart verwenden Sie das Jupyter Notebook in Visual Studio Code, um schnell Geschäftseinblicke abzuleiten. Verwenden Sie den mssql-python Treiber von Python, um sich mit Ihrer SQL-Datenbank zu verbinden, lesen Sie die Daten und formatieren Sie sie dann für E-Mails, Berichte und Präsentationen.

Der mssql-python Treiber erfordert keine externen Abhängigkeiten von Windows-Computern. Der Treiber installiert alles, was er mit einer einzigen pip Installation benötigt, sodass Sie die neueste Version des Treibers für neue Skripts verwenden können, ohne andere Skripts zu unterbrechen, die Sie nicht zum Upgrade und Test benötigen.

mssql-python-Dokumentation | mssql-python-Quellcode | Paket (PyPI) | Visual Studio Code

Voraussetzungen


Erstellen einer SQL-Datenbank

Erstellen oder verbinden Sie sich mit einer SQL-Datenbank auf einer der folgenden Plattformen:

Erstellen Sie das Projekt, und führen Sie den Code aus.

Erstellen eines neuen Projekts

  1. Öffnen Sie eine Eingabeaufforderung in Ihrem Entwicklungsverzeichnis. Wenn du keines hast, erstelle ein neues Verzeichnis, wie zum Beispiel python oder scripts. Vermeide Ordner auf deinem OneDrive, da Synchronisation die Verwaltung deiner virtuellen Umgebung beeinträchtigen kann.

  2. Erstellen Sie ein neues Projekt mit uv.

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

Hinzufügen von Abhängigkeiten

Installieren Sie im selben Verzeichnis die Pakete mssql-python, python-dotenv, rich, pandas und matplotlib. Fügen Sie dann ipykernel und uv als Entwicklungsabhängigkeiten hinzu. VS Code benötigt ipykernel zum Ausführen von Notebook-Zellen und uv zum Verwalten von Paketen aus Ihren Notebook-Zellen heraus.

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

Starten Sie Visual Studio Code.

Führen Sie im selben Verzeichnis den folgenden Befehl aus.

code .

Pyproject.toml aktualisieren

  1. Das pyproject.toml enthält die Metadaten für Ihr Projekt.

  2. Aktualisieren Sie die Beschreibung so, dass sie aussagekräftiger ist.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Speichern und schließen Sie die Datei.

Speichern der Verbindungszeichenfolge

  1. Öffnen Sie die .gitignore Datei, und fügen Sie einen Ausschluss für Dateien hinzu .env . Ihre Datei sollte mit diesem Beispiel vergleichbar sein. Achten Sie darauf, sie zu speichern und zu schließen, wenn Sie fertig sind.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Erstellen Sie im aktuellen Verzeichnis eine neue Datei mit dem Namen .env.

  3. Fügen Sie in der .env Datei einen Eintrag für die Verbindungszeichenfolge mit dem Namen SQL_CONNECTION_STRINGhinzu. Ersetzen Sie das Beispiel hier durch Ihren tatsächlichen Verbindungszeichenfolgenwert.

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

    Tipp

    Die hier verwendete Verbindungszeichenfolge hängt weitgehend vom Typ der SQL-Datenbank ab, mit der Sie eine Verbindung herstellen. Wenn Sie eine Verbindung mit einer Azure SQL-Datenbank oder einer SQL-Datenbank in Fabric herstellen, verwenden Sie die ODBC-Verbindungszeichenfolge auf der Registerkarte "Verbindungszeichenfolgen". Möglicherweise müssen Sie den Authentifizierungstyp je nach Szenario anpassen. Weitere Informationen zu Verbindungszeichenfolgen und deren Syntax finden Sie in der Referenz zur Verbindungszeichenfolgensyntax.

Erstellen eines Jupyter-Notizbuchs

  1. Wählen Sie "Datei" und dann " Neue Datei" und " Jupyter-Notizbuch " aus der Liste aus. Ein neues Notizbuch wird geöffnet.

  2. Wählen Sie "Datei" und dann " Speichern unter" aus, und geben Sie Ihrem neuen Notizbuch einen Namen.

  3. Fügen Sie die folgenden Importe in der ersten Zelle hinzu.

    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. Verwenden Sie die Schaltfläche +Markdown oben im Notizbuch, um eine neue Markdownzelle hinzuzufügen.

  5. Fügen Sie der neuen Markdownzelle den folgenden Text hinzu.

    ## Define queries for use later
    
  6. Aktivieren Sie das Häkchen in der Zellensymbolleiste oder verwenden Sie die Tastenkombinationen Ctrl+Enter oder Shift+Enter, um die Markdownzelle zu rendern.

  7. Verwenden Sie die Schaltfläche +Code oben im Notizbuch, um eine neue Codezelle hinzuzufügen.

  8. Fügen Sie der neuen Codezelle den folgenden Code hinzu.

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

Anzeigen von Ergebnissen in einer Tabelle

  1. Verwenden Sie die Schaltfläche +Markdown oben im Notizbuch, um eine neue Markdownzelle hinzuzufügen.

  2. Fügen Sie der neuen Markdownzelle den folgenden Text hinzu.

    ## Print orders by customer and display in a table
    
  3. Aktivieren Sie das Häkchen in der Zellensymbolleiste oder verwenden Sie die Tastenkombinationen Ctrl+Enter oder Shift+Enter, um die Markdownzelle zu rendern.

  4. Verwenden Sie die Schaltfläche +Code oben im Notizbuch, um eine neue Codezelle hinzuzufügen.

  5. Fügen Sie der neuen Codezelle den folgenden Code hinzu.

    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)
    

    Tipp

    Unter macOS funktionieren sowohl ActiveDirectoryInteractive als auch ActiveDirectoryDefault für die Microsoft Entra-Authentifizierung. ActiveDirectoryInteractive fordert Sie auf, sich jedes Mal anzumelden, wenn Sie das Skript ausführen. Um wiederholte Anmeldeaufforderungen zu vermeiden, melden Sie sich einmal über die Azure CLI an, indem Sie az login ausführen, und verwenden Sie dann ActiveDirectoryDefault, das die zwischengespeicherten Anmeldeinformationen wiederverwendet.

  6. Verwenden Sie die Schaltfläche "Alle ausführen" oben im Notizbuch, um das Notizbuch auszuführen.

  7. Wählen Sie den Jupyter-notebook-qs-Kernel aus, wenn Sie dazu aufgefordert werden.

Anzeigen von Ergebnissen in einem Diagramm

  1. Überprüfen Sie die Ausgabe der letzten Zelle. Es sollte eine Tabelle mit drei Spalten und fünf Zeilen angezeigt werden.

  2. Verwenden Sie die Schaltfläche +Markdown oben im Notizbuch, um eine neue Markdownzelle hinzuzufügen.

  3. Fügen Sie der neuen Markdownzelle den folgenden Text hinzu.

    ## Display spend by category in a horizontal bar chart
    
  4. Aktivieren Sie das Häkchen in der Zellensymbolleiste oder verwenden Sie die Tastenkombinationen Ctrl+Enter oder Shift+Enter, um die Markdownzelle zu rendern.

  5. Verwenden Sie die Schaltfläche +Code oben im Notizbuch, um eine neue Codezelle hinzuzufügen.

  6. Fügen Sie der neuen Codezelle den folgenden Code hinzu.

    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. Verwenden Sie die Schaltfläche " Zelle ausführen ", oder Ctrl+Alt+Enter führen Sie die Zelle aus.

  8. Überprüfen Sie die Ergebnisse. Machen Sie dieses Notizbuch zu Ihrem eigenen.

Nächste Schritte

Nutzen Sie diese Artikel, um weiter aufzubauen: