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

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

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

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

Примечание.

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

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

Примечание.

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

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

  • Python установлен на клиентском компьютере, который вы используете для подключения к SQL Server. Вы можете запускать скрипты из командной строки или использовать среду разработки на 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)
    '
    
  • Расширение MSSQL для Visual Studio Code, установленное на клиентском компьютере, который вы используете для подключения к SQL Server. Вы можете использовать другие средства управления базами данных или запросов.

Другие вопросы

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

  • Установка пакета зависит от экземпляра SQL, базы данных и пользователя, указанных в сведениях о подключении, которые вы укажете для sqlmlutils. Чтобы использовать пакет в нескольких экземплярах SQL или базах данных, либо для разных пользователей, установите пакет для каждого из них. Исключение — пакет, установленный в публичном доступе, который используется всеми пользователями. sqlmlutils по умолчанию выбирает общедоступную область действия только если подключение выполняется от имени участника роли сервера sysadmin, а в противном случае — частную область действия. Чтобы выполнить установку в общей области от имени другого субъекта безопасности, передайте scope=sqlmlutils.Scope.public_scope() параметру install, для чего требуется роль базы данных db_owner. Если пользователь устанавливает более новую версию публичного пакета, публичный пакет не затрагивается, но пользователь получает доступ к новой версии.

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

    • Используйте Python в базе данных для задач, которые выигрывают от тесной интеграции с движком базы данных, например, машинного обучения, а не для задач, которые просто выполняют запросы к базе данных.

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

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

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

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

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

Установка пакета sqlmlutils в сетевом режиме

Если клиентский компьютер имеет доступ к интернету, установите sqlmlutils с помощью pip:

pip install sqlmlutils

Установка пакета sqlmlutils в автономном режиме

Если у клиентского компьютера нет доступа в интернет, установите sqlmlutils из скачанного файла:

  1. Убедитесь, что у вас установлен PIP . Для получения дополнительной информации см. раздел Установка pip.

  2. Скачайте последний файл sqlmlutils со страницы релизов sqlmlutils на клиентский компьютер. Не распаковывайте файл.

  3. Откройте командную строку и выполните следующую команду для установки пакета 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, который запускается в этом экземпляре. sqlmlutils использует CREATE EXTERNAL LIBRARY для установки пакета и всех его зависимостей.

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

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

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

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

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

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

  2. Для установки пакета text-tools используйте следующие команды. Подставьте собственные значения для подключения к базе данных SQL Server. Также передайте имя драйвера ODBC, установленного на клиентском компьютере, напримерdriver="ODBC Driver 18 for SQL Server", , потому что имя драйвера, используемое sqlmlutils по умолчанию, применяется только к Windows.

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

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

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

Примечание.

Эта процедура работает для пакета без зависимостей. SQLPackageManager.install() Разрешает зависимости от PyPI даже при передаче локального .whl файла, поэтому чтобы добавить пакет с зависимостями, используйте клиентский компьютер с выходом в интернет и следите за добавлением пакета онлайн.

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

  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 содержит один файл.

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

Выполните следующий скрипт Python. Замените фактический путь к файлу и имя пакета, а также сведения о подключении к базе данных SQL Server. Также передайте имя драйвера ODBC, установленного на клиентском компьютере, напримерdriver="ODBC Driver 18 for SQL Server", , потому что имя драйвера, используемое sqlmlutils по умолчанию, применяется только к 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")

Используйте пакет

Теперь пакет можно использовать в скрипте 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. Дополнительные сведения см. в файле README для Python-пакета sqlmlutils.

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

import sqlmlutils
help(sqlmlutils.SQLPackageManager.install)