Запустите .py из оракула (plsql) - PullRequest
2 голосов
/ 31 октября 2019

Мне нужно решение для запуска сценариев Python (.py) из Oracle (pl / sql). Есть ли какое-нибудь решение?

Например: у меня есть скрипт на python для отправки gmail и создания электронной таблицы Excel из базы данных Oracle. Но я должен вызвать это с Oracle, и мне также нужно использовать параметры из Oracle.

Ответы [ 3 ]

1 голос
/ 31 октября 2019

DBMS_SCHEDULER может пригодиться.

Сначала создайте сценарий ада, который является оберткой для вашего Python.

Затем создайте задание.

begin
dbms_scheduler.create_program
(
program_name => 'PYEXCEL',
program_type => 'EXECUTABLE',
program_action => '/the_path/the_py_script_wrapper.ks',
enabled => TRUE,
comments => 'Call Python stuff'
);
end;
/

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

Затем запустите:

BEGIN
  DBMS_SCHEDULER.RUN_JOB(
    JOB_NAME            => 'PYEXCEL',
    USE_CURRENT_SESSION => FALSE);
END;
/

Это самый «чистый» PLSQL, как мне кажется.

1 голос
/ 31 октября 2019

Как правило, база данных изолирована от ОС по соображениям безопасности. Есть несколько обходных путей (*) :

  1. Один из них - написать внешнюю процедуру, которая вызывает код OS c .
  2. Один из них - написать хранимую процедуру Java, которая имитирует команду ОС host и запускает сценарий оболочки. Узнайте больше

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

В качестве альтернативы Oracle имеет встроенный пакет UTLT_MAIL для отправки электронной почты с PL / SQL и там* сторонние библиотеки PL / SQL, которые позволяют нам генерировать электронные таблицы Excel из базы данных. Они могут быть более подходящими для вашей ситуации (в зависимости от того, сколько вам нужно повторно использовать код Python).

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


(*) Для полноты картины существует третий способ выполнения сценариев оболочки ОС из базы данных. Мы можем прикрепить скрипты препроцессора к внешним таблицам, которые запускаются всякий раз, когда мы выбираем из внешней таблицы. Узнайте больше . Но я не думаю, что внешние таблицы имеют отношение к этому сценарию. И, конечно же, внешним таблицам также необходимо предоставить привилегии ОС для базы данных, поэтому не стоит избегать этого разговора с вашим администратором баз данных.

0 голосов
/ 01 ноября 2019

Метод TenG - это самый простой путь к тому, что вы ищете, но другой метод можно найти, используя OS_COMMAND

http://plsqlexecoscomm.sourceforge.net/plsqldoc/os_command.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...