执行Python脚本的MySQL触发器

pjngdqdw  于 2022-12-28  发布在  Mysql
关注(0)|答案(1)|浏览(205)

我有一个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中)?

w9apscun

w9apscun1#

尝试更改"SET cmd ='python C:/用户/SS19/桌面/insert_weather. py';设置命令='C:/.. python.exe的完整路径../python C:/用户/SS19/桌面/插入天气. py'; ".
对我很有效。

相关问题