我有一个Python脚本:1.读取MySQL input_table
的经纬度数据,2.使用OpenWeatherMap API计算weather_data,3.将该weather_data插入到weather_table
每次我在Windows命令提示符下手动运行Python脚本时,它都会执行所需的操作。如何确保每次在input_table
中插入新记录时都运行这个.py脚本(而不必手动运行.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)
要测试触发器,我的工作流是:a)将1条记录插入input_table
B)检查weather_table
中的相应结果
现在,当我在input_table
中插入1条记录时,MySQL Workbench上的消息是“1 row(s)affected”。但是,在weather_table
中没有看到任何变化。这是因为我将result
的数据类型声明为int' but the
吗?result '返回的记录如下所示:
首要问题是:我如何确保每次将新记录插入到input_table中时(无需手动运行.py脚本),这个.py脚本都运行完成(成功地将INSERT执行到weather-table
中)?
1条答案
按热度按时间w9apscun1#
尝试更改"SET cmd ='python C:/用户/SS19/桌面/insert_weather. py';设置命令='C:/.. python.exe的完整路径../python C:/用户/SS19/桌面/插入天气. py'; ".
对我很有效。