Partager via


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

Dans ce guide de démarrage rapide, vous utilisez Jupyter Notebook dans Visual Studio Code pour dériver rapidement des insights métier. Vous utilisez le mssql-python pilote pour Python pour vous connecter à votre base de données SQL dans Fabric et lire les données qui sont ensuite mises en forme pour une utilisation dans les e-mails, les présentations de rapports, etc.

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


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 répertoire appelé python, scriptsetc. Évitez les dossiers sur votre OneDrive, 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 requiert que ipykernel et uv soient ajoutés pour pouvoir interagir avec uv depuis vos cellules de notebook à l'aide de commandes comme !uv add mssql_python.

uv add mssql_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. Pyproject.toml contient les métadonnées de votre projet.

  2. Mettez à jour la description pour être plus descriptive.

    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 doit être similaire à cet exemple. Veillez à l’enregistrer et à le fermer lorsque vous avez terminé.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Dans le répertoire actif, créez un fichier nommé .env.

  3. Dans le .env fichier, ajoutez une entrée pour votre chaîne de connexion nommée SQL_CONNECTION_STRING. Remplacez l’exemple ici par votre valeur de chaîne de connexion réelle.

    SQL_CONNECTION_STRING="Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryDefault"
    

    Conseil / Astuce

    Pour la base de données SQL dans Fabric, utilisez la chaîne de connexion ODBC à partir de l’onglet des chaînes de connexion sans l'information DRIVER.

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 cellule ou utilisez les raccourcis Ctrl+Enter clavier 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 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;
    """
    

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 cellule ou utilisez les raccourcis Ctrl+Enter clavier 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)
    

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 via Azure CLI en exécutant az login, puis utilisez ActiveDirectoryDefault, qui réutilise les informations d’identification mises en cache.

  1. Utilisez le bouton Exécuter tout en haut du bloc-notes pour exécuter le bloc-notes.

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

Afficher les résultats dans un graphique

  1. Passez en revue le résultat de la dernière cellule. 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 cellule ou utilisez les raccourcis Ctrl+Enter clavier 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. Passez en revue les résultats. Faites de ce bloc-notes votre propre bloc-notes.

Étape suivante

Pour obtenir d’autres exemples, consultez le dépôt GitHub du mssql-python pilote pour contribuer à des idées ou signaler des problèmes.