Inicio rápido: Conexión a una base de datos SQL desde un cuaderno de Jupyter Notebook

En este inicio rápido, utiliza Jupyter Notebook en Visual Studio Code para obtener rápidamente información empresarial. Usa el mssql-python controlador de Python para conectarte a tu base de datos SQL, leer los datos y luego formatearlos para usarlos en correos electrónicos, informes y presentaciones.

El mssql-python controlador no requiere ninguna dependencia externa en máquinas Windows. El controlador instala todo lo que necesita con una sola pip instalación, lo que le permite usar la versión más reciente del controlador para nuevos scripts sin interrumpir otros scripts que no tenga tiempo para actualizar y probar.

Documentación de mssql-pythonCódigo fuente de mssql-pythonPaquete (PyPI)Visual Studio Code

Prerrequisitos

Requisitos previos para instalar el sistema operativo

Instale los requisitos previos específicos del sistema operativo, que solo hay que instalar una vez. Los usuarios de Windows pueden saltarse este paso. Para detalles completos sobre la plataforma, véase Instalar mssql-python.

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

Creación de una base de datos SQL

Crea o conéctate a una base de datos SQL en una de las siguientes plataformas:

Creación del proyecto y ejecución del código

Creación de un nuevo proyecto

  1. Abra un símbolo del sistema en su directorio de desarrollo. Si no tienes uno, crea un nuevo directorio, como python o scripts. Evita las carpetas en tu OneDrive, ya que la sincronización puede interferir en la gestión de tu entorno virtual.

  2. Cree un proyecto con uv.

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

Agregar dependencias

En el mismo directorio, instale los mssql-pythonpaquetes , python-dotenv, rich, pandasy matplotlib . A continuación, agregue ipykernel y uv como dependencias de desarrollo. VS Code requiere ipykernel para ejecutar celdas del cuaderno y uv para gestionar paquetes desde las celdas del cuaderno.

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

Iniciar Visual Studio Code

En el mismo directorio, ejecute el siguiente comando.

code .

Actualizar pyproject.toml

  1. Abra el archivo pyproject.toml en un editor. Este archivo contiene los metadatos de tu proyecto.

  2. Actualiza el valor description.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Guarde y cierre el archivo.

Guardar la cadena de conexión

  1. Abra el .gitignore archivo y agregue una exclusión para .env los archivos. Tu archivo debería ser similar al siguiente ejemplo.

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

  3. En el directorio actual, cree un nuevo archivo denominado .env.

  4. En el .env archivo, agregue una entrada para la cadena de conexión denominada SQL_CONNECTION_STRING. Sustituya los marcadores de posición por sus valores reales.

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

    La cadena de conexión depende del tipo de base de datos SQL a la que te conectes. Para Azure SQL Database o base de datos SQL en Fabric, usa la cadena de conexión ODBC de la pestaña de cadenas de conexión y ajusta el tipo de autenticación para tu escenario. Para más información sobre la sintaxis de cadena de conexión, véase Connection strings for mssql-python.

    Sugerencia

    En macOS, tanto ActiveDirectoryInteractive como ActiveDirectoryDefault funcionan para la autenticación de Microsoft Entra. ActiveDirectoryInteractive le pide que inicie sesión cada vez que ejecute el script. Para evitar que se repitan los prompts de inicio de sesión, inicia sesión una vez con el comando CLI de Azureaz login y utiliza ActiveDirectoryDefault. ActiveDirectoryDefault Reutiliza la credencial almacenada en caché.

Creación de un cuaderno de Jupyter Notebook

  1. Seleccione Archivo y, a continuación, Nuevo archivo y Jupyter Notebook en la lista. Se abre un nuevo cuaderno.

  2. Seleccione Archivo y, después, Guardar como... y asigne un nombre al nuevo cuaderno.

  3. Agregue las siguientes importaciones en la primera celda.

    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. Use el botón + Markdown situado en la parte superior del cuaderno para agregar una nueva celda markdown.

  5. Agregue el texto siguiente a la nueva celda markdown.

    ## Define queries for use later
    
  6. Seleccione la marca de verificación en la barra de herramientas de celda o use los métodos abreviados Ctrl+Enter de teclado o Shift+Enter para representar la celda de markdown.

  7. Use el botón + Código en la parte superior del cuaderno para agregar una nueva celda de código.

  8. Agregue el código siguiente a la nueva celda de código.

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

Mostrar los resultados en una tabla

  1. Use el botón + Markdown situado en la parte superior del cuaderno para agregar una nueva celda markdown.

  2. Agregue el texto siguiente a la nueva celda markdown.

    ## Print orders by customer and display in a table
    
  3. Seleccione la marca de verificación en la barra de herramientas de celda o use los métodos abreviados Ctrl+Enter de teclado o Shift+Enter para representar la celda de markdown.

  4. Use el botón + Código en la parte superior del cuaderno para agregar una nueva celda de código.

  5. Agregue el código siguiente a la nueva celda de código.

    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. Utiliza el botón Ejecutar todo en la parte superior del cuaderno para ejecutar el cuaderno.

  7. Seleccione el kernel jupyter-notebook-qs cuando se le solicite.

Mostrar los resultados en un gráfico

  1. Revisa la salida de la celda anterior. Debería ver una tabla con tres columnas y cinco filas.

  2. Use el botón + Markdown situado en la parte superior del cuaderno para agregar una nueva celda markdown.

  3. Agregue el texto siguiente a la nueva celda markdown.

    ## Display spend by category in a horizontal bar chart
    
  4. Seleccione la marca de verificación en la barra de herramientas de celda o use los métodos abreviados Ctrl+Enter de teclado o Shift+Enter para representar la celda de markdown.

  5. Use el botón + Código en la parte superior del cuaderno para agregar una nueva celda de código.

  6. Agregue el código siguiente a la nueva celda de código.

    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. Use el botón Ejecutar celda o Ctrl+Alt+Enter para ejecutar la celda.

  8. Revise el gráfico.