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