Démarrage rapide : Se connecter à une base de données SQL à partir d’un notebook Jupyter

Dans ce démarrage rapide, utilisez Jupyter Notebook dans Visual Studio Code pour rapidement obtenir des insights métier. Utilisez le mssql-python pilote de Python pour vous connecter à votre base de données SQL, lire les données, puis les formater pour les utiliser dans des e-mails, rapports et présentations.

Le mssql-python pilote ne nécessite aucune dépendance externe sur les machines Windows. Le pilote installe tout ce dont il a besoin avec une seule pip installation, ce qui vous permet d’utiliser la dernière version du pilote pour les nouveaux scripts sans interrompre d’autres scripts que vous n’avez pas le temps de mettre à niveau et de tester.

documentation mssql-python | code source mssql-python | Package (PyPI) | Visual Studio Code

Prerequisites

Prérequis pour installer le système d’exploitation

Installez les prérequis ponctuels spécifiques au système d'exploitation. Les utilisateurs Windows peuvent sauter cette étape. Pour tous les détails sur la plateforme, voir Installer mssql-python.

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

Créer une base de données SQL

Créer ou connecter une base de données SQL sur l’une des plateformes suivantes :

Créer le projet et exécuter le code

Créer un projet

  1. Ouvrez une invite de commandes dans votre répertoire de développement. Si vous n’en avez pas, créez un nouveau répertoire, tel que python ou scripts. Évitez les dossiers sur votre OneDrive, car la synchronisation peut interférer avec la gestion de votre environnement virtuel.

  2. Créez un projet avec uv.

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

Ajouter des dépendances

Dans le même répertoire, installez les paquets mssql-python, python-dotenv, rich, pandas, et matplotlib. Ensuite, ajoutez ipykernel et uv comme dépendances de développement. VS Code nécessite ipykernel pour exécuter les cellules de bloc-notes et uv pour gérer les paquets directement depuis les cellules de votre bloc-notes.

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

Lancer Visual Studio Code

Dans le même répertoire, exécutez la commande suivante.

code .

Mettre à jour pyproject.toml

  1. Ouvrez le fichier pyproject.toml dans votre éditeur. Ce fichier contient les métadonnées de votre projet.

  2. Mettez à jour la valeur description.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Enregistrez et fermez le fichier.

Enregistrer la chaîne de connexion

  1. Ouvrez le .gitignore fichier et ajoutez une exclusion pour .env les fichiers. Votre fichier devrait être similaire à l’exemple suivant.

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

  3. Dans le répertoire actif, créez un fichier nommé .env.

  4. Dans le .env fichier, ajoutez une entrée pour votre chaîne de connexion nommée SQL_CONNECTION_STRING. Remplacez les espaces réservés par vos valeurs réelles.

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

    La chaîne de connexion dépend du type de base de données SQL à laquelle vous vous connectez. Pour Azure SQL Database ou SQL Database dans Fabric, utilisez la chaîne de connexion ODBC depuis l’onglet des chaînes de connexion, et ajustez le type d’authentification pour votre scénario. Pour plus d’informations sur la syntaxe des chaîne de connexion, voir Chaînes de connexion pour mssql-python.

    Conseil / Astuce

    Sur macOS, les deux ActiveDirectoryInteractive et ActiveDirectoryDefault fonctionnent pour l’authentification Microsoft Entra. ActiveDirectoryInteractive vous invite à vous connecter chaque fois que vous exécutez le script. Pour éviter les invites de connexion répétées, connectez-vous une fois avec la commande Azure CLIaz login et utilisez ActiveDirectoryDefault. ActiveDirectoryDefault Réutilise les informations d’identification mises en cache.

Créer un notebook Jupyter

  1. Sélectionnez Fichier, puis Nouveau fichier et Jupyter Notebook dans la liste. Un nouveau bloc-notes s’ouvre.

  2. Sélectionnez Fichier, puis Enregistrez sous... et donnez un nom à votre nouveau bloc-notes.

  3. Ajoutez les importations suivantes dans la première cellule.

    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. Utilisez le bouton + Markdown en haut du bloc-notes pour ajouter une nouvelle cellule Markdown.

  5. Ajoutez le texte suivant à la nouvelle cellule markdown.

    ## Define queries for use later
    
  6. Sélectionnez la coche dans la barre d’outils de la cellule ou utilisez les raccourcis clavier Ctrl+Enter ou Shift+Enter pour afficher la cellule Markdown.

  7. Utilisez le bouton + Code en haut du bloc-notes pour ajouter une nouvelle cellule de code.

  8. Ajoutez le code suivant à la nouvelle cellule de code.

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

Afficher les résultats dans un tableau

  1. Utilisez le bouton + Markdown en haut du bloc-notes pour ajouter une nouvelle cellule Markdown.

  2. Ajoutez le texte suivant à la nouvelle cellule markdown.

    ## Print orders by customer and display in a table
    
  3. Sélectionnez la coche dans la barre d’outils de la cellule ou utilisez les raccourcis clavier Ctrl+Enter ou Shift+Enter pour afficher la cellule Markdown.

  4. Utilisez le bouton + Code en haut du bloc-notes pour ajouter une nouvelle cellule de code.

  5. Ajoutez le code suivant à la nouvelle cellule de code.

    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. Utilisez le bouton Exécuter tout en haut du bloc-notes pour exécuter le bloc-notes.

  7. Sélectionnez le noyau jupyter-notebook-qs lorsque vous y êtes invité.

Afficher les résultats dans un graphique

  1. Examinez la sortie de la cellule précédente. Vous devez voir un tableau avec trois colonnes et cinq lignes.

  2. Utilisez le bouton + Markdown en haut du bloc-notes pour ajouter une nouvelle cellule Markdown.

  3. Ajoutez le texte suivant à la nouvelle cellule markdown.

    ## Display spend by category in a horizontal bar chart
    
  4. Sélectionnez la coche dans la barre d’outils de la cellule ou utilisez les raccourcis clavier Ctrl+Enter ou Shift+Enter pour afficher la cellule Markdown.

  5. Utilisez le bouton + Code en haut du bloc-notes pour ajouter une nouvelle cellule de code.

  6. Ajoutez le code suivant à la nouvelle cellule de code.

    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. Utilisez le bouton Exécuter la cellule ou Ctrl+Alt+Enter pour exécuter la cellule.

  8. Examinez le graphique.