Установка пакетов Python с помощью sqlmlutils

Применимо к: SQL Server 2019 (15.x) Управляемый экземпляр SQL Azure

В этой статье описывается использование функций из пакета sqlmlutils для установки новых пакетов Python в экземпляре Служб машинного обучения SQL Server и в кластерах больших данных. Устанавливаемые пакеты можно использовать в сценариях Python, выполняющихся в базе данных, с помощью инструкции T-SQL sp_execute_external_script.

В этой статье описывается использование функций из пакета sqlmlutils для установки новых пакетов Python в экземпляре Служб машинного обучения в Управляемом экземпляре SQL Azure. Устанавливаемые пакеты можно использовать в сценариях Python, выполняющихся в базе данных, с помощью инструкции T-SQL sp_execute_external_script.

Примечание

Нельзя обновить или удалить пакеты, предварительно установленные на экземпляре Служб машинного обучения Управляемого экземпляра SQL. Чтобы посмотреть список установленных в настоящее время пакетов, см. раздел Список всех установленных пакетов Python.

Дополнительные сведения о расположении пакетов и путях установки см. в разделе Получение сведений о пакете Python.

Примечание

Описанный в этой статье пакет sqlmlutils используется для добавления пакетов Python в SQL Server 2019 и более поздние версии. Для SQL Server 2017 и более ранних версий обратитесь к разделу Установка пакетов с инструментами Python.

Предварительные требования

  • Установите Azure Data Studio на клиентском компьютере, который используется для подключения к SQL Server. Вы можете использовать другие средства запросов и управления базами данных, но в этой статье рассматривается Azure Data Studio.

  • Установите ядро Python в Azure Data Studio. Вы также можете установить и использовать Python из командной строки, и вам может потребоваться альтернативная среда разработки Python, например Visual Studio Code с расширением Python.

    Версия Python на клиентском компьютере должна соответствовать версии Python на сервере, а устанавливаемые пакеты должны быть совместимы с используемой версией Python. Сведения о том, какая версия Python устанавливается вместе с той или иной версией SQL Server, приведены в разделе Версии Python и R.

    Чтобы проверить версию Python для конкретного экземпляра SQL Server, используйте следующую команду T-SQL.

    EXECUTE sp_execute_external_script
      @language = N'Python',
      @script = N'
    import sys
    print(sys.version)
    '
    

Другие замечания

  • Библиотека пакетов Python находится в папке Program Files своего экземпляра SQL Server и по умолчанию для установки в этой папке требуются права администратора. Дополнительные сведения см. в статье Расположение библиотеки пакетов.

  • Установка пакета зависит от экземпляра SQL, базы данных и пользователя, указанных в сведениях о подключении, которые вы укажете для sqlmlutils. Чтобы использовать пакет в нескольких экземплярах или базах данных SQL или для разных пользователей, необходимо установить пакет для каждого из них. Исключением является только если пакет устанавливается членом dbo, когда пакет общедоступный и является общим для всех пользователей. Если пользователь устанавливает более новую версию общедоступного пакета, это не повлияет на общедоступный пакет, но такой пользователь будет иметь доступ к более новой версии.

  • Перед добавлением пакета определите, подходит ли этот пакет для среды SQL Server.

    • Мы рекомендуем использовать Python в базе данных для задач, которые используют преимущества тесной интеграции с ядром СУБД, например машинное обучение, а не задач, которые просто отправляют запросы в базу данных.

    • Если вы добавляете пакеты, которые приводят к слишком большой вычислительной нагрузке на сервер, производительность снизится.

    • В защищенной среде SQL Server может потребоваться отказаться от следующих пакетов:

      • пакеты, которым требуется доступ к сети;
      • пакеты, которым требуется доступ к файловой системе с повышенными правами;
      • пакеты, используемые для веб-разработки или других задач, малоэффективных в SQL Server.
    • Пакет tensorflow Python невозможно установить с использованием sqlmlutils. Дополнительные сведения и обходной путь см. в статье Известные проблемы служб машинного обучения SQL Server.

Установка пакета sqlmlutils на клиентском компьютере

Сначала пакет sqlmlutils необходимо установить на клиентском компьютере, который используется для подключения к SQL Server.

Azure Data Studio

Если вы будете использовать пакет sqlmlutils в Azure Data Studio, вы можете установить его с помощью функции "Управление пакетами" в записной книжке ядра Python.

  1. В записной книжке ядра Python в Azure Data Studio щелкните Управление пакетами.
  2. Щелкните Добавить новую.
  3. В поле Поиск пакетов PIP введите "sqlmlutils" и нажмите кнопку Поиск.
  4. Выберите версию пакета, которую необходимо установить (рекомендуется последняя версия).
  5. Нажмите кнопку Установить, а затем кнопку Закрыть.

Командная строка Python

Если вы будете использовать sqlmlutils из командной строки Python или интегрированной среды разработки (IDE), пакет sqlmlutils можно установить с помощью простой команды pip:

pip install sqlmlutils

Пакет sqlmlutils можно также установить из ZIP-файла:

  1. Убедитесь в том, что установлена программа pip. Дополнительные сведения см. в статье об установке pip.
  2. Скачайте последнюю версию ZIP-файла sqlmlutils со страницы https://github.com/microsoft/sqlmlutils/tree/master/R/dist на клиентский компьютер. Не распаковывайте файл.
  3. Откройте командную строку и выполните следующие команды для установки пакета sqlmlutils. Замените полный путь к скачанному ZIP-файлу sqlmlutils (в этом примере предполагается, что загружен файл c:\temp\sqlmlutils-1.0.0.zip).
    pip install --upgrade --upgrade-strategy only-if-needed c:\temp\sqlmlutils-1.0.0.zip
    

Добавление пакета Python в SQL Server

Используя sqlmlutils, можно добавлять пакеты Python в экземпляр SQL. Затем эти пакеты можно использовать в коде Python, который выполняется в экземпляре SQL. sqlmlutils использует команду CREATE EXTERNAL LIBRARY для установки пакета и всех его зависимостей.

В следующем примере вы добавите пакет text-tools в SQL Server.

Добавление пакета в сетевом режиме

Если клиентский компьютер, используемый для подключения к SQL Server, имеет доступ к Интернету, с помощью пакета sqlmlutils можно найти пакет text-tools и все зависимости через Интернет, а затем удаленно установить пакет в экземпляре SQL Server.

  1. На клиентском компьютере откройте Python или среду Python.

  2. Для установки пакета text-tools используйте следующие команды. Замените сведения о подключении к базе данных SQL Server (если используется проверка подлинности Windows, вам не нужны параметры uid и pwd).

  1. На клиентском компьютере откройте Python или среду Python.

  2. Для установки пакета text-tools используйте следующие команды. Подставьте собственные значения для подключения к базе данных SQL Server.

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

Добавление пакета в автономном режиме

Если клиентский компьютер, используемый для подключения к SQL Server, не имеет подключения к Интернету, можно использовать pip на компьютере с доступом в Интернет для загрузки пакета и всех зависимых пакетов в локальную папку. Затем папка копируется на клиентский компьютер для установки в автономном режиме.

На компьютере с доступом к Интернету

  1. Откройте командную строку и выполните следующую команду, чтобы создать локальную папку, содержащую пакет text-tools. В этом примере создается папка c:\temp\text-tools.

    pip download text-tools -d c:\temp\text-tools
    
  2. Скопируйте папку text-tools на клиентский компьютер. В следующем примере предполагается, что вы скопировали ее в c:\temp\packages\text-tools.

На клиентском компьютере

Используйте sqlmlutils, чтобы установить каждый пакет (WHL-файл), который находится в локальной папке, созданной с помощью pip. Порядок установки пакетов не имеет значения.

В этом примере text-tools не имеет зависимостей, поэтому нужно установить только один файл из папки text-tools. Зато, например, у пакета scikit-plot имеется 11 зависимостей, поэтому в папке будет находиться 12 файлов (scikit-plot и 11 зависимых пакетов), и каждый из них будет установлен.

Выполните следующий скрипт Python. Замените фактический путь к файлу и имя пакета, а также сведения о подключении к базе данных SQL Server (если используется проверка подлинности Windows, вам не нужны параметры uid и pwd). Повторите инструкцию sqlmlutils.SQLPackageManager для каждого файла пакета в папке.

Выполните следующий скрипт Python. Замените фактический путь к файлу и имя пакета, а также сведения о подключении к базе данных SQL Server. Повторите инструкцию sqlmlutils.SQLPackageManager для каждого файла пакета в папке.

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

Использование пакета

Теперь пакет можно использовать в скрипте Python в SQL Server. Пример:

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

Удаление пакета из SQL Server

Если вы хотите удалить пакет text-tools, используйте следующую команду Python на клиентском компьютере, указав переменную подключения, которая была определена ранее.

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

Дополнительные функции sqlmlutils

Пакет sqlmlutils содержит ряд функций для управления пакетами Python, а также для создания, выполнения хранимых процедур и запросов в SQL Server и управления ими. Дополнительные сведения см. в файле сведений sqlmlutils для Python.

Дополнительные сведения о любых функциях sqlmlutils можно получить с помощью функции справки Python. Пример:

import sqlmlutils
help(SQLPackageManager.install)

Дальнейшие действия