Compartir a través de


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

En este inicio rápido, usará Jupyter Notebook en Visual Studio Code para derivar rápidamente información empresarial. Se utiliza el mssql-python controlador para Python para conectarse a la base de datos SQL y leer los datos que, a continuación, se formatean para su uso en correos electrónicos, informes, presentaciones, etc.

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-python | Código fuente mssql-python | Paquete (PyPi) | Visual Studio Code

Prerrequisitos


Creación de una base de datos SQL

Para este inicio rápido se requiere el esquema AdventureWorks2025 Lightweight en Microsoft SQL Server, la base de datos SQL en Fabric o Azure SQL Database.

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

Creación de un nuevo proyecto

  1. Abra una ventana del terminal en el directorio de desarrollo. Si no tiene uno, cree un directorio denominado python, scripts, etc. Evite carpetas en OneDrive, la sincronización puede interferir con la administración del 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 que ipykernel y uv estén añadidos para poder interactuar con uv dentro de las celdas del notebook mediante comandos como !uv add mssql_python.

uv add mssql_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. Pyproject.toml contiene los metadatos del proyecto.

  2. Actualice la descripción para que sea más descriptivo.

    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. El archivo debe ser similar a este ejemplo. Asegúrese de guardarlo y cerrarlo cuando haya terminado.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. En el directorio actual, cree un nuevo archivo denominado .env.

  3. En el .env archivo, agregue una entrada para la cadena de conexión denominada SQL_CONNECTION_STRING. Reemplace el ejemplo aquí por el valor real de la cadena de conexión.

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

    Sugerencia

    La cadena de conexión que se usa aquí depende en gran medida del tipo de base de datos SQL a la que se conecta. Si se conecta a una base de datos de Azure SQL o a una base de datos SQL en Fabric, use la cadena de conexión ODBC de la pestaña Cadenas de conexión. Es posible que tenga que ajustar el tipo de autenticación en función de su escenario. Para obtener más información sobre las cadenas de conexión y su sintaxis, consulte referencia de sintaxis de cadena de conexión.

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

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 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)
    

    Sugerencia

    Para usar la autenticación de Microsoft Entra en macOS, debe iniciar sesión a través de la extensión de Azure Repos en Visual Studio Code o mediante la ejecución az login a través de la interfaz de Azure Command-Line (CLI).

  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. Revise la salida de la última celda. 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 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 los resultados. Haz que este bloc de notas sea tuyo.

Paso siguiente

Visite el repositorio de mssql-python GitHub del controlador para obtener más ejemplos, para contribuir a ideas o notificar problemas.