繁体   English   中英

在Mysql数据库服务器中触发触发器时,可以在树莓派上运行python脚本吗?

[英]Can i run a python script on my raspberry pi when a trigger is triggered in Mysql database server?

我正在研究一个项目,该项目检查数据库中的LEDSTATUS是否具有值“ 0”,然后led熄灭,如果值是“ 1”,则led点亮。 我搜索后发现,有一种名为UDF的东西可以运行脚本,但不确定数据库是否不是本地(在服务器上)是否可能。 可能吗? 如果是,怎么办?

我创建了两个python脚本,一个打开了脚本,另一个关闭了它。

我将创建一个包含一个表LEDSTATUS的数据库,并将创建一个触发器,该触发器将在LEDSTATUS的值更改时运行,如果该值为0,则运行关闭了led的python脚本,如果该值为1,则运行另一个脚本。

如果您无权访问远程数据库服务器,则可能没有权限。

您可以运行cronjob(或任何计划的任务)来定期检查数据库并运行适当的脚本,但是在数据库更改和脚本运行之间会有一定的延迟,具体取决于数据库运行的频率。

编辑(4/2/2019)

我认为触发器不是正确的解决方案。 触发器旨在在执行某些操作时在内部运行查询,而不触发外部脚本。 可能有多种方法可以完成此操作,但是我对此并不熟悉,因此无法提供任何建议。

我建议两个选择之一:

  1. 编写一个Python脚本,该脚本定期检查您的数据库(称为polling )的LED状态,并与树莓派进行交互以更新LED。

  2. 将您的数据库放在可以更新数据库和LED的API后面,并更改直接更新LED状态数据库的任何内容,以代替与API交互。 Flask是您可以使用的出色的python Web框架,并且可以使用request软件包与其进行交互。

我会建议选项1,但选项2实施起来会更简单。 两种解决方案都可以从树莓派运行。

数据库触发器适用于DELETE,INSERT,UPDATE sql查询。 您无法使用它触发python脚本。

有时,您使用UPDATE SQL查询将数据库字段设置为0或1。

基于事件的方法是在执行sql更新查询之前或之后运行相应的python脚本。 Python可以在pi上作为网络服务器运行,您可以通过GET或POST发送值。

轮询方法是使用python脚本或类似命令每隔x(mili)秒查询数据库,并相应地执行打开/关闭功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM