Instalar pacotes Python com sqlmlutils

Aplica-se a: SQL Server 2019 (15.x) e versões posteriores Azure SQL Managed Instance

Este artigo descreve como usar funções no pacote sqlmlutils para instalar novos pacotes Python numa instância de Machine Learning Services no SQL Server. Pode utilizar os pacotes que instala em scripts Python executados na base de dados através da instrução T-SQL sp_execute_external_script.

Este artigo descreve como usar funções no pacote sqlmlutils para instalar novos pacotes Python numa instância de Azure SQL Managed Instance Machine Learning Services. Pode utilizar os pacotes que instala em scripts em Python que são executados na base de dados através da instrução T-SQL sp_execute_external_script.

Observação

Não pode atualizar ou desinstalar pacotes que vêm pré-instalados numa instância do SQL Managed Instance Machine Learning Services. Para ver uma lista de pacotes atualmente instalados, consulte Listar todos os pacotes Python instalados.

Para mais informações sobre localização de pacotes e caminhos de instalação, consulte Obter informações de pacotes em Python.

Observação

Use o pacote sqlmlutils descrito neste artigo para adicionar pacotes Python ao SQL Server 2019 ou posterior. Para SQL Server 2017 e anteriores, consulte Instalar pacotes com ferramentas Python.

Pré-requisitos

  • Python instalado no computador cliente que usas para te ligar ao SQL Server. Podes executar scripts a partir da linha de comandos, ou usar um ambiente de desenvolvimento Python como o Visual Studio Code com a extensão Python.

    A versão de Python no computador cliente tem de coincidir com a versão de Python do servidor, e os pacotes que instala devem ser compatíveis com a versão de Python que tem. Para informações sobre qual versão de Python está incluída em cada versão do SQL Server, veja versões Python e R.

    Para verificar a versão do Python numa instância específica do SQL Server, utilize o seguinte comando T-SQL.

    EXECUTE sp_execute_external_script
      @language = N'Python',
      @script = N'
    import sys
    print(sys.version)
    '
    
  • Extensão MSSQL para Visual Studio Code instalada no computador cliente que usa para se ligar ao SQL Server. Pode usar outras ferramentas de gestão de bases de dados ou de consultas.

Outras considerações

  • A biblioteca de pacotes Python está na pasta Program Files da sua instância do SQL Server. Por defeito, instalar nesta pasta requer permissões de administrador. Para mais informações, consulte a localização da biblioteca de pacotes.

  • A instalação de pacotes é específica para a instância SQL, base de dados e utilizador que especifica na informação de ligação que fornece ao sqlmlutils. Para usar o pacote em múltiplas instâncias SQL ou bases de dados, ou para diferentes utilizadores, instale o pacote para cada uma. A exceção é um pacote instalado em âmbito público , que é partilhado com todos os utilizadores. sqlmlutils seleciona o âmbito público por defeito apenas quando se ligar como membro da sysadmin função de servidor e, caso contrário, o âmbito privado. Para instalar no âmbito público enquanto outro principal, passe scope=sqlmlutils.Scope.public_scope() para install, o que requer a função de base de dados db_owner. Se um utilizador instalar uma versão mais recente de um pacote público, o pacote público não é afetado, mas esse utilizador tem acesso à versão mais recente.

  • Antes de adicionar um pacote, considere se este se adequa ao ambiente SQL Server.

    • Use Python dentro da base de dados para tarefas que beneficiam de uma integração estreita com o motor de base de dados, como aprendizagem automática, em vez de tarefas que simplesmente consultam a base de dados.

    • Se adicionares pacotes que colocam demasiada pressão computacional no servidor, o desempenho sofre.

    • Num ambiente SQL Server reforçado, evite os seguintes tipos de pacotes:

      • Pacotes que requerem acesso à rede
      • Pacotes que requerem acesso elevado ao sistema de ficheiros
      • Pacotes usados para desenvolvimento web ou outras tarefas que não beneficiam ao correr dentro do SQL Server
    • Não podes instalar o pacote Python tensorflow com sqlmlutils. Para mais informações e uma solução alternativa, consulte Problemas conhecidos nos Serviços de Aprendizagem Automática do SQL Server.

Instala o sqlmlutils no computador cliente

Para usar o sqlmlutils, primeiro precisa de o instalar no computador cliente que usa para se ligar ao SQL Server.

Instalar sqlmlutils online

Se o computador cliente tiver acesso à internet, instale o sqlmlutils usando pip:

pip install sqlmlutils

Instalar sqlmlutils offline

Se o computador cliente não tiver acesso à internet, instale o sqlmlutils a partir de um ficheiro descarregado:

  1. Certifique-se de que tem o pip instalado. Para mais informações, consulte instalação do pip.

  2. Descarregue o ficheiro sqlmlutils mais recente da página de versões do sqlmlutils para o computador cliente. Não descompactes o ficheiro.

  3. Abra um Prompt de Comando e execute o seguinte comando para instalar o pacote sqlmlutils . Substitua o caminho completo para o ficheiro que descarregaste. Este exemplo assume que o ficheiro descarregado é c:\temp\sqlmlutils-1.0.0.zip.

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

Adicionar um pacote Python no SQL Server

Ao usar sqlmlutils, podes adicionar pacotes Python a uma instância SQL e depois usá-los em código Python que corre nessa instância. sqlmlutils utiliza CREATE EXTERNAL LIBRARY para instalar o pacote e cada uma das respetivas dependências.

O exemplo seguinte adiciona o pacote text-tools ao SQL Server.

Adicione o pacote online

Se o computador cliente que usa para se ligar ao SQL Server tem acesso à internet, pode usar o sqlmlutils para encontrar o pacote text-tools e quaisquer dependências online, e depois instalar o pacote remotamente numa instância do SQL Server.

  1. No computador cliente, abre Python ou um ambiente Python.

  2. Utilize os seguintes comandos para instalar o pacote text-tools . Substitua as suas próprias informações de conexão à base de dados do SQL Server (se usar a Autenticação do Windows, não precisa dos parâmetros uid e pwd).

  1. No computador cliente, abre Python ou um ambiente Python.

  2. Utilize os seguintes comandos para instalar o pacote text-tools . Substitua a sua própria informação de ligação à base de dados SQL Server. Também passe o nome de um driver ODBC instalado no computador cliente, como driver="ODBC Driver 18 for SQL Server", porque o nome do driver que o sqlmlutils usa por defeito aplica-se apenas ao Windows.

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

Adicionar o pacote offline

Se o computador cliente que usa para se ligar ao SQL Server não tiver ligação à internet, use o pip num computador que tenha para descarregar o pacote para uma pasta local. Depois copias a pasta para o computador cliente e instalas o pacote offline.

Observação

Este procedimento funciona para um pacote que não tem dependências. SQLPackageManager.install() resolve dependências do PyPI mesmo quando passa um ficheiro local .whl , por isso, para adicionar um pacote com dependências, use um computador cliente com acesso à internet e siga Adicionar o pacote online.

Num computador com acesso à internet

  1. Abra um Prompt de Comando e execute o seguinte comando para criar uma pasta local que contenha o pacote text-tools . Este exemplo cria a pasta c:\temp\text-tools.

    pip download text-tools -d c:\temp\text-tools
    
  2. Copie a text-tools pasta para o computador cliente. O exemplo seguinte assume que o copiou para c:\temp\packages\text-tools.

No computador cliente

Utilize sqlmlutils para instalar o pacote (ficheiro .whl) que o pip transferiu para a pasta local.

Neste exemplo, as ferramentas de texto não têm dependências, pelo que a text-tools pasta contém um único ficheiro.

Execute o seguinte script Python. Substitua o caminho real do ficheiro e o nome do pacote, e as suas próprias informações de conexão à base de dados do SQL Server (se usar a Autenticação do Windows, não precisa dos parâmetros uid e pwd).

Execute o seguinte script Python. Substitua o caminho real do ficheiro e o nome do pacote, e a sua própria informação de ligação à base de dados SQL Server. Também passe o nome de um driver ODBC instalado no computador cliente, como driver="ODBC Driver 18 for SQL Server", porque o nome do driver que o sqlmlutils usa por defeito aplica-se apenas ao 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")

Utilize o pacote

Agora pode usar o pacote num script Python no SQL Server. Por exemplo:

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

Remover o pacote do SQL Server

Para remover o pacote text-tools, execute o seguinte comando Python no computador cliente, usando a mesma variável de ligação que definiu anteriormente.

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

Mais funções sqlmlutils

O pacote sqlmlutils contém várias funções para gerir pacotes Python, bem como para criar, gerir e executar procedimentos armazenados e consultas num SQL Server. Para mais informações, consulte o ficheiro Python README do sqlmlutils.

Para informações sobre qualquer função sqlmlutils , use a função de ajuda em Python. Por exemplo:

import sqlmlutils
help(sqlmlutils.SQLPackageManager.install)