MySQL Trigger, который выполняет скрипт Python - PullRequest
0 голосов
/ 12 июня 2019

У меня есть скрипт Python, который: 1. читает MySQL input_table широт и долгот, 2. вычисляет weather_data с помощью API OpenWeatherMap. 3. ВСТАВЛЯЕТ эти weather_data в weather_table

Этот скрипт Python делает то, что нужно, каждый раз, когда я вручную запускаю его в командной строке Windows. Вопрос: как мне убедиться, что этот скрипт .py запускается каждый раз, когда новая запись вставляется в мой input_table (без необходимости вручную запускать скрипт .py)?

Для этого я написал триггер MySQL:

DELIMITER $$
CREATE TRIGGER ds_testdb1.weather_trigger_1 AFTER INSERT ON ds_testdb1.input_table 
FOR EACH ROW 
BEGIN
DECLARE cmd TEXT;
DECLARE result int;
SET cmd= 'python C:/Users/SS19/Desktop/insert_weather.py';
SET result= sys_exec(cmd);       -- is a UDF (User Defined Function)
END $$
DELIMITER ;

-- Query OK, 0 rows affected (0.10 sec)

Чтобы проверить триггер, мой рабочий процесс: а) Вставить 1 запись в input_table б) проверить соответствующий результат в weather_table

Теперь, когда я вставляю 1 запись в input_table, сообщение в MySQL Workbench будет «затронуто 1 строкой». Однако никаких изменений не наблюдается в weather_table. Это потому, что я объявил тип данных result равным int' but the result`, возвращает запись, которая выглядит следующим образом:


datatypes of columns in the weather_table

Общий вопрос: как мне убедиться, что этот скрипт .py выполняется до конца (успешно выполняет INSERTS в weather-table) каждый раз, когда новая запись вставляется в мою input_table (без необходимости вручную запускать скрипт .py )

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