Установка пакетов 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.
Необходимые компоненты
- Необходимо установить Службы машинного обучения SQL Server с параметром языка 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.
- В записной книжке ядра Python в Azure Data Studio щелкните Управление пакетами.
- Щелкните Добавить новую.
- В поле Поиск пакетов PIP введите "sqlmlutils" и нажмите кнопку Поиск.
- Выберите версию пакета, которую необходимо установить (рекомендуется последняя версия).
- Нажмите кнопку Установить, а затем кнопку Закрыть.
Командная строка Python
Если вы будете использовать sqlmlutils из командной строки Python или интегрированной среды разработки (IDE), пакет sqlmlutils можно установить с помощью простой команды pip:
pip install sqlmlutils
Пакет sqlmlutils можно также установить из ZIP-файла:
- Убедитесь в том, что установлена программа pip. Дополнительные сведения см. в статье об установке pip.
- Скачайте последнюю версию ZIP-файла sqlmlutils со страницы https://github.com/microsoft/sqlmlutils/tree/master/R/dist на клиентский компьютер. Не распаковывайте файл.
- Откройте командную строку и выполните следующие команды для установки пакета 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.
На клиентском компьютере откройте Python или среду Python.
Для установки пакета text-tools используйте следующие команды. Замените сведения о подключении к базе данных SQL Server (если используется проверка подлинности Windows, вам не нужны параметры
uid
иpwd
).
На клиентском компьютере откройте Python или среду Python.
Для установки пакета 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 на компьютере с доступом в Интернет для загрузки пакета и всех зависимых пакетов в локальную папку. Затем папка копируется на клиентский компьютер для установки в автономном режиме.
На компьютере с доступом к Интернету
Откройте командную строку и выполните следующую команду, чтобы создать локальную папку, содержащую пакет text-tools. В этом примере создается папка
c:\temp\text-tools
.pip download text-tools -d c:\temp\text-tools
Скопируйте папку
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)
Следующие шаги
Сведения о том, как просмотреть пакеты Python, установленные в Службах машинного обучения SQL Server, см. в разделе Получения сведений о пакете Python.
Сведения об установке пакетов R в Службы машинного обучения SQL Server см. в разделе Установка новых пакетов R в SQL Server.