Instalación de paquetes de Python con sqlmlutils

Se aplica a: SQL Server 2019 (15.x) y versiones posteriores de Azure SQL Managed Instance

Este artículo describe cómo utilizar funciones en el paquete sqlmlutils para instalar nuevos paquetes de Python en una instancia de Machine Learning Services en SQL Server. Puedes usar los paquetes que instalas en scripts de Python que se ejecutan en la base de datos mediante la instrucción T-SQL sp_execute_external_script.

En este artículo se describe cómo usar las funciones del paquete sqlmlutils para instalar nuevos paquetes de Python en una instancia de Machine Learning Services en Azure SQL Managed Instance. Puedes usar los paquetes que instales en scripts de Python que se ejecutan dentro de la base de datos mediante la instrucción T-SQL sp_execute_external_script.

Nota:

No puedes actualizar ni desinstalar paquetes que vienen preinstalados en una instancia de SQL Managed Instance Machine Learning Services. Para ver una lista de los paquetes instalados actualmente, vea Enumeración de todos los paquetes de Python instalados.

Para obtener más información sobre la ubicación de los paquetes y las rutas de acceso de instalación, consulte Obtención de información de paquetes de Python.

Nota:

Utiliza el paquete sqlmlutils descrito en este artículo para añadir paquetes de Python a SQL Server 2019 o posteriores. Para SQL Server 2017 y versiones anteriores, consulte Instalación de paquetes con las herramientas de Python.

Prerrequisitos

  • Python instalado en el ordenador cliente que usas para conectarte a SQL Server. Puedes ejecutar scripts desde la línea de comandos, o usar un entorno de desarrollo en Python como Visual Studio Code con la extensión Python.

    La versión de Python en el ordenador cliente debe coincidir con la versión de Python del servidor, y los paquetes que instales deben ser compatibles con la versión de Python que tengas. Para obtener información sobre la versión de Python que se incluye con cada versión de SQL Server, vea Versiones de Python y R.

    Para comprobar la versión de Python en una instancia concreta de SQL Server, use el siguiente comando de T-SQL.

    EXECUTE sp_execute_external_script
      @language = N'Python',
      @script = N'
    import sys
    print(sys.version)
    '
    
  • Extensión MSSQL para Visual Studio Code instalada en el ordenador cliente que usas para conectarte a SQL Server. Puede usar otras herramientas de consulta o administración de bases de datos.

Otras consideraciones

  • La biblioteca de paquetes de Python está en la carpeta Program Files de tu instancia de SQL Server. Por defecto, instalar en esta carpeta requiere permisos de administrador. Para obtener más información, consulte Ubicación de la biblioteca de paquetes.

  • La instalación del paquete es específica de la instancia, la base de datos y el usuario de SQL especificados en la información de conexión proporcionada a sqlmlutils. Para usar el paquete en múltiples instancias o bases de datos SQL, o para diferentes usuarios, instala el paquete para cada una. La excepción es un paquete instalado en ámbito público , que se comparte con todos los usuarios. SQLMlutils selecciona el ámbito público por defecto solo cuando te conectas como miembro del sysadmin rol del servidor, y el ámbito privado en el caso contrario. Para instalar en el ámbito público como otro principal, pasa scope=sqlmlutils.Scope.public_scope() a install, lo que requiere el rol de db_owner base de datos. Si un usuario instala una versión más reciente de un paquete público, el paquete público no se ve afectado, pero ese usuario tiene acceso a la versión más reciente.

  • Antes de agregar un paquete, piense si es adecuado para el entorno de SQL Server.

    • Utiliza Python dentro de la base de datos para tareas que se benefician de una integración estrecha con el motor de base de datos, como el aprendizaje automático, en lugar de tareas que simplemente consultan la base de datos.

    • Si añades paquetes que ejercen demasiada presión computacional sobre el servidor, el rendimiento se resiente.

    • En un entorno SQL Server reforzado, evita los siguientes tipos de paquetes:

      • Paquetes que requieren acceso a la red
      • Paquetes que requieren acceso con privilegios elevados al sistema de archivos
      • Paquetes que se usan para el desarrollo web u otras tareas que no obtienen ningún beneficio al ejecutarse en SQL Server
    • No puedes instalar el paquete de Python tensorflow con sqlmlutils. Para obtener más información y una solución, vea Incidencias conocidas de SQL Server Machine Learning Services.

Instalación de sqlmlutils en el equipo cliente

Para usar sqlmlutils, primero debe instalarlo en el equipo cliente que usa para conectarse a SQL Server.

Instalación de sqlmlutils en línea

Si el ordenador cliente tiene acceso a internet, instala sqlmlutils usando pip:

pip install sqlmlutils

Instalación de sqlmlutils sin conexión

Si el ordenador cliente no tiene acceso a internet, instala sqlmlutils desde un archivo descargado:

  1. Asegúrate de tener pip instalado. Para más información, véase instalación de tuberías.

  2. Descarga el último archivo sqlmlutils desde la página de versiones de sqlmlutils al ordenador cliente. No descomprima el archivo.

  3. Abre un símbolo de la línea de comandos y ejecuta el siguiente comando para instalar el paquete sqlmlutils . Sustituye la ruta completa al archivo que descargaste. Este ejemplo asume que el archivo descargado es c:\temp\sqlmlutils-1.0.0.zip.

    pip install --upgrade --upgrade-strategy only-if-needed c:\temp\sqlmlutils-1.0.0.zip
    

Adición de un paquete de Python en SQL Server

Usando sqlmlutils, puedes añadir paquetes de Python a una instancia SQL y luego usarlos en código Python que se ejecute en esa instancia. sqlmlutils usa CREATE EXTERNAL LIBRARY para instalar el paquete y cada una de sus dependencias.

El siguiente ejemplo añade el paquete text-tools a SQL Server.

Adición del paquete en línea

Si el ordenador cliente que usas para conectarte a SQL Server tiene acceso a internet, puedes usar sqlmlutils para encontrar el paquete text-tools y cualquier dependencia en línea, y luego instalar el paquete en una instancia de SQL Server remotamente.

  1. En el equipo cliente, abra Python o un entorno de Python.

  2. Use los comandos siguientes para instalar el paquete text-tools. Sustituya la información propia de conexión de base de datos de SQL Server (si usa la autenticación de Windows, no necesita los parámetros uid y pwd).

  1. En el equipo cliente, abra Python o un entorno de Python.

  2. Use los comandos siguientes para instalar el paquete text-tools. Sustituya la información de conexión de la base de datos de SQL Server por la suya. También pasa el nombre de un controlador ODBC instalado en el ordenador cliente, como driver="ODBC Driver 18 for SQL Server", porque el nombre del controlador que usa sqlmlutils por defecto se aplica solo a Windows.

import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="server", database="database", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text-tools")

Agregar el paquete sin conexión

Si el ordenador cliente que usas para conectarte a SQL Server no tiene conexión a internet, usa pip en un ordenador que sí la tenga para descargar el paquete a una carpeta local. Luego copias la carpeta al ordenador cliente e instalas el paquete sin conexión.

Nota:

Este procedimiento funciona para un paquete que no tiene dependencias. SQLPackageManager.install() resuelve dependencias de PyPI incluso cuando pasas un archivo local .whl , así que para añadir un paquete que tenga dependencias, usa un ordenador cliente con acceso a internet y sigue Añadir el paquete en línea.

En un ordenador con acceso a internet

  1. Abra un Símbolo del sistema y ejecute el siguiente comando para crear una carpeta local que contenga el paquete text-tools. En este ejemplo, se crea la carpeta c:\temp\text-tools.

    pip download text-tools -d c:\temp\text-tools
    
  2. Copie la carpeta text-tools en el equipo cliente. En el ejemplo siguiente se da por supuesto que lo ha copiado en c:\temp\packages\text-tools.

En el equipo cliente

Utiliza sqlmlutils para instalar el paquete (el archivo .whl) que pip descargó a la carpeta local.

En este ejemplo, text-tools no tiene dependencias, por lo que la text-tools carpeta contiene un único archivo.

Ejecute el siguiente script de Python. Sustituya la ruta de acceso de archivo y el nombre reales del paquete, así como la información propia de conexión de base de datos de SQL Server (si usa la autenticación de Windows, no necesita los parámetros uid y pwd).

Ejecute el siguiente script de Python. Sustituya la ruta de acceso y el nombre reales del archivo del paquete, así como sus propios datos de conexión a la base de datos de SQL Server. También pasa el nombre de un controlador ODBC instalado en el ordenador cliente, como driver="ODBC Driver 18 for SQL Server", porque el nombre del controlador que usa sqlmlutils por defecto se aplica solo a Windows.

import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="yourserver", database="yourdatabase", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text_tools-1.0.0-py3-none-any.whl")

Uso del paquete

Ahora puede usar el paquete en un script de Python en SQL Server. Por ejemplo:

EXECUTE sp_execute_external_script
  @language = N'Python',
  @script = N'
from text_tools.finders import find_best_string
corpus = "Lorem Ipsum text"
query = "Ipsum"
first_match = find_best_string(query, corpus)
print(first_match)
  '

Eliminación de un paquete de SQL Server

Para eliminar el paquete text-tools, ejecuta el siguiente comando Python en el ordenador cliente, usando la misma variable de conexión que definiste antes.

sqlmlutils.SQLPackageManager(connection).uninstall("text-tools")

Más funciones de sqlmlutils

El paquete sqlmlutils contiene varias funciones para gestionar paquetes Python, así como para crear, gestionar y ejecutar procedimientos almacenados y consultas en un SQL Server. Para más información, consulta el archivo Python README de sqlmlutils.

Para obtener información sobre cualquier función de sqlmlutils, use la función help de Python. Por ejemplo:

import sqlmlutils
help(sqlmlutils.SQLPackageManager.install)