#python #sql-server #tsql #machine-learning #microsoft-machine-learning-server
#питон #sql-сервер #tsql #машинное обучение #microsoft-machine-learning-server
Вопрос:
Я пытаюсь сделать что-то полезное с помощью служб машинного обучения SQL и Python.
Я пытаюсь включить внешний скрипт python в код SQL. На данный момент я тестирую SQL Server Management Studio на SQL Server 2019 Dev Edition.
Фоллоинг Нильс Берглунд, превосходная статья, которую я делаю:
EXEC sp_execute_external_script
@language =N'Python',
@script=N'
import os
os.system("C:TEMPml.py")
OutputDataSet = InputDataSet
print("Say Hello from SQL Server Management Studio")
',
@input_data_1 =N'SELECT 42'
WITH RESULT SETS (([TheAnswer] int not null));
GO
Мой ml.py
сценарий как раз такой:
#!"C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERPYTHON_SERVICESpython.exe"
print("Say Hello from the external script")
Когда я запускаю свой скрипт T-SQL, я получаю следующее:
STDERR message(s) from external script:
Access Denied
STDOUT message(s) from external script:
Say Hello from SQL Management Studio
(1 row affected)
Completion time: 2020-12-23T08:51:59.9264251-05:00
Я убедился, что сценарий имеет, по моему мнению, правильные разрешения:
Я даже попытался просто передать полный контроль всем. Я не вижу никаких ошибок ни в SQL, ни в средстве просмотра событий Windows.
Я пробовал использовать следующие варианты os.system()
без какого-либо успеха:
os.system(""C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERPYTHON_SERVICESLibcustml.py"")
os.system(""C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERPYTHON_SERVICESpython.exe" "C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERPYTHON_SERVICESLibcustml.py"")
os.system("python.exe "C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERPYTHON_SERVICESLibcustml.py"")
os.system("python.exe C:TEMPml.py")
Любая идея очень приветствуется.
Спасибо!
Комментарии:
1. Я думаю, что я нашел ответ, который я искал уже в сообщении Нила ( nielsberglund.com/2018/03/07 /… ) . Это было бы
@script = N'source("/path/to/my/script/my_python_script.py")';
2.Какую версию SQL server вы используете? Вот несколько ссылок, которые я сохранил по этой теме. Я еще не пошел по этому пути использования Python на SQL Server, но я собираюсь. docs.microsoft.com/en-us/sql/machine-learning/…docs.microsoft.com/en-us/sql/machine-learning /…
3. Спасибо @JasonCook за ваш комментарий. Я использую SQL Server 2017. Я близок к решению, но столкнулся с другой проблемой. Я обновляю вопрос, чтобы отразить его. Спасибо!
Ответ №1:
Я, наконец, смог выполнить эту работу с помощью:
- Передача python / script location/
os.system
кому . - Размещение скрипта в
cust
папке внутри служб python в моем экземпляре SQL Server. Я не слишком доволен этим. Похоже, это вопрос разрешений для папок, но я много раз пытался имитировать их в другой, более удобной папке, мне не удалось успешно запустить ее.
Вот как это выглядит:
EXEC sp_execute_external_script
@language =N'Python',
@script=N'
import os
os.system("python "C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERPYTHON_SERVICESLibcustml.py"")
OutputDataSet = InputDataSet
print("Say Hello from SQL Server Management Studio")
',
@input_data_1 =N'SELECT 42'
WITH RESULT SETS (([TheAnswer] int not null));
GO