Installer des packages Python avec sqlmlutils

S’applique à : SQL Server 2019 (15.x) et versions ultérieures d’Azure SQL Managed Instance

Cet article décrit comment utiliser les fonctions du paquet sqlmlutils pour installer de nouveaux paquets Python sur une instance de Machine Learning Services sur SQL Server. Vous pouvez utiliser les packages que vous installez dans des scripts Python exécutés dans la base de données via l’instruction T-SQL sp_execute_external_script.

Cet article explique comment utiliser les fonctions du package sqlmlutils pour installer de nouveaux packages Python sur une instance d’Azure SQL Managed Instance Machine Learning Services. Vous pouvez utiliser les packages que vous installez dans des scripts Python qui s’exécutent dans la base de données à l’aide de l’instruction T-SQL sp_execute_external_script.

Note

Vous ne pouvez pas mettre à jour ou désinstaller les paquets préinstallés sur une instance de SQL Managed Instance Machine Learning Services. Pour afficher la liste des packages actuellement installés, consultez la Liste de tous les packages Python installés.

Pour plus d’informations sur l’emplacement des packages et les chemins d’installation, consultez Obtenir des informations sur les packages Python.

Note

Utilisez le paquet sqlmlutils décrit dans cet article pour ajouter des paquets Python à SQL Server 2019 ou une version ultérieure. Pour SQL Server 2017 et antérieur, consultez Installer des packages avec des outils Python.

Prérequis

  • Python installé sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server. Vous pouvez exécuter des scripts depuis la ligne de commande, ou utiliser un environnement de développement Python comme Visual Studio Code avec l’extension Python.

    La version de Python sur l’ordinateur client doit correspondre à celle de Python sur le serveur, et les paquets que vous installez doivent être compatibles avec la version de Python que vous possédez. Pour connaître la version de Python fournie avec chaque version de SQL Server, consultez Versions de Python et de R.

    Pour vérifier la version de Python sur une instance SQL Server déterminée, utilisez la commande T-SQL suivante.

    EXECUTE sp_execute_external_script
      @language = N'Python',
      @script = N'
    import sys
    print(sys.version)
    '
    
  • Extension MSSQL pour Visual Studio Code installée sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server. Vous pouvez utiliser d’autres outils de gestion ou de requête de base de données.

Autres considérations

  • La bibliothèque de paquets Python se trouve dans le dossier Program Files de votre instance SQL Server. Par défaut, installer dans ce dossier nécessite des autorisations administrateur. Pour plus d’informations, consultez Emplacement de la bibliothèque de packages.

  • L’installation du package est spécifique à l’instance SQL, à la base de données et à l’utilisateur que vous spécifiez dans les informations de connexion que vous fournissez à sqlmlutils. Pour utiliser le paquet dans plusieurs instances SQL ou bases de données, ou pour différents utilisateurs, installez le paquet pour chacune. L’exception est un package installé dans un cadre public , qui est partagé avec tous les utilisateurs. SQLMLUTILS sélectionne par défaut l’étendue publique uniquement lorsque vous vous connectez en tant que membre du sysadmin rôle serveur, et la portée privée sinon. Pour effectuer l’installation dans la portée publique en tant qu’autre principal, passez scope=sqlmlutils.Scope.public_scope() à install, ce qui nécessite le rôle de base de données db_owner. Si un utilisateur installe une version plus récente d’un paquet public, le paquet public n’est pas affecté, mais cet utilisateur a accès à la version plus récente.

  • Avant d’ajouter un package, déterminez si le package est adapté à l’environnement SQL Server.

    • Utilisez Python dans la base de données pour les tâches bénéficiant d’une intégration étroite avec le moteur de base de données, comme l’apprentissage automatique, plutôt que pour les tâches qui se contentent d’interroger la base de données.

    • Si vous ajoutez des packages qui exercent trop de pression de calcul sur le serveur, les performances en souffrent.

    • Dans un environnement SQL Server renforcé, évitez les types de paquets suivants :

      • Les packages qui nécessitent un accès réseau
      • Les packages qui nécessitent un accès au système de fichiers élevé
      • Les packages utilisés pour le développement Web ou d’autres tâches qui ne bénéficient pas de l’exécution dans SQL Server
    • Vous ne pouvez pas installer le paquet Python tensorflow avec sqlmlutils. Pour plus d’informations ainsi qu’une solution de contournement, consultez Problèmes connus dans SQL Server Machine Learning Services.

Installer sqlmlutils sur l’ordinateur client

Pour utiliser sqlmlutils, vous devez d’abord l’installer sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server.

Installer sqlmlutils en ligne

Si l’ordinateur client a accès à Internet, installez sqlmlutils en utilisant pip :

pip install sqlmlutils

Installer sqlmlutils hors connexion

Si l’ordinateur client n’a pas accès à Internet, installez sqlmlutils à partir d’un fichier téléchargé :

  1. Assurez-vous d’avoir un pip installé. Pour plus d’informations, voir installation de pip.

  2. Téléchargez le dernier fichier sqlmlutils depuis la page des versions de sqlmlutils sur l’ordinateur client. Ne décompressez pas le fichier.

  3. Ouvrez une invite de commande et exécutez la commande suivante pour installer le paquet sqlmlutils . Remplace le chemin complet vers le fichier que tu as téléchargé. Cet exemple suppose que le fichier téléchargé est c:\temp\sqlmlutils-1.0.0.zip.

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

Ajouter un package Python sur SQL Server

En utilisant sqlmlutils, vous pouvez ajouter des paquets Python à une instance SQL puis les utiliser dans du code Python qui s’exécute dans cette instance. sqlmlutils utilise CREATE EXTERNAL LIBRARY pour installer le package ainsi que chacune de ses dépendances.

L’exemple suivant ajoute le paquet text-tools à SQL Server.

Ajouter le package en ligne

Si l’ordinateur client que vous utilisez pour vous connecter à SQL Server a accès à Internet, vous pouvez utiliser sqlmlutils pour trouver le paquet text-tools et les dépendances en ligne, puis installer le paquet à distance sur une instance SQL Server.

  1. Sur l’ordinateur client, ouvrez Python ou un environnement Python.

  2. Utilisez les commandes suivantes pour installer le package text-tools. Remplacez vos propres informations de connexion de base de données SQL Server (si vous utilisez l’authentification Windows, vous n’avez pas besoin des paramètres uid et pwd).

  1. Sur l’ordinateur client, ouvrez Python ou un environnement Python.

  2. Utilisez les commandes suivantes pour installer le package text-tools. Remplacez les valeurs existantes par vos propres informations de connexion à la base de données SQL Server. Passez également le nom d’un pilote ODBC installé sur l’ordinateur client, comme driver="ODBC Driver 18 for SQL Server", car le nom du pilote utilisé par défaut par sqlmlutils s’applique uniquement à Windows.

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

Ajouter le package hors connexion

Si l'ordinateur client que vous utilisez pour vous connecter à SQL Server n'a pas de connexion internet, utilisez pip sur un ordinateur qui en a pour télécharger le package dans un dossier local. Vous copiez ensuite le dossier sur l’ordinateur client et installez le paquet hors ligne.

Note

Cette procédure fonctionne pour un package sans dépendances. SQLPackageManager.install() résout les dépendances de PyPI même lorsque vous passez un fichier local .whl , donc pour ajouter un paquet qui a des dépendances, utilisez un ordinateur client avec accès à Internet et suivez Ajouter le paquet en ligne.

Sur un ordinateur avec accès à Internet

  1. Ouvrez une invite de commandes et exécutez la commande suivante pour créer un dossier local qui contient le package text-tools. Cet exemple crée le dossier c:\temp\text-tools.

    pip download text-tools -d c:\temp\text-tools
    
  2. Copiez le dossier text-tools sur l’ordinateur client. L’exemple suivant suppose que vous l’avez copié dans c:\temp\packages\text-tools.

Sur l’ordinateur client

Utilisez sqlmlutils pour installer le package (fichier .whl) que pip a téléchargé dans le dossier local.

Dans cet exemple, text-tools n’a aucune dépendance, donc le text-tools dossier contient un seul fichier.

Exécutez le script Python suivant. Remplacez le chemin du fichier, le nom du package et vos propres informations de connexion de base de données SQL Server (si vous utilisez l’authentification Windows, vous n’avez pas besoin des paramètres uid et pwd).

Exécutez le script Python suivant. Remplacez le chemin du fichier, le nom du package et vos propres informations de connexion de base de données SQL Server. Passez également le nom d’un pilote ODBC installé sur l’ordinateur client, comme driver="ODBC Driver 18 for SQL Server", car le nom du pilote utilisé par défaut par sqlmlutils s’applique uniquement à 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")

Utiliser le package

Vous pouvez maintenant utiliser le package dans un script Python dans SQL Server. Par exemple :

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

Supprimer le package de SQL Server

Pour supprimer le package text-tools, exécutez la commande Python suivante sur l’ordinateur client, en utilisant la même variable de connexion que vous avez définie précédemment.

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

Autres fonctions sqlmlutils

Le paquet sqlmlutils contient plusieurs fonctions pour gérer des paquets Python, ainsi que pour créer, gérer et exécuter des procédures stockées et des requêtes dans un SQL Server. Pour plus d’informations, voir le fichier Python README de sqlmlutils.

Pour en savoir plus sur une fonction sqlmlutils, utilisez la fonction help de Python. Par exemple :

import sqlmlutils
help(sqlmlutils.SQLPackageManager.install)