当Mysql数据库服务器触发触发器时,我可以在我的raspberry pi上运行python脚本吗?

2024-10-02 18:18:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我创建了两个python脚本,一个打开led,另一个关闭led。你知道吗

我将创建一个带有一个表LEDSTATUS的数据库,并将创建一个触发器,当LEDSTATUS的值发生更改时将运行该触发器,如果该值为0,则运行关闭led的python脚本,如果该值为1,则运行另一个脚本。你知道吗


Tags: 项目服务器脚本数据库led触发器udfledstatus
2条回答

数据库触发器用于DELETE、INSERT和updatesql查询。不能用它触发python脚本。你知道吗

在某个时候,可以使用updatesql查询将数据库字段设置为0或1。你知道吗

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

轮询方法是使用python脚本或类似脚本每隔x(mili)秒查询一次数据库,并相应地执行打开/关闭函数。你知道吗

如果您没有访问远程数据库服务器的权限,那么可能没有。你知道吗

您可以运行cronjob(或任何计划任务),定期检查数据库并运行相应的脚本,但数据库更改与脚本运行之间会有延迟,具体取决于它运行的频率。你知道吗

编辑(4/2/2019)

我认为trigger不是正确的解决方案。触发器用于在执行某些操作时在内部运行查询,而不是触发外部脚本。可能有办法做到这一点,但我不熟悉任何,所以我不能给任何建议。你知道吗

我推荐两种选择之一:

  1. 编写一个python脚本,定期检查数据库(称为polling)中的LED状态,并与raspberry pi交互以更新LED。

  2. 把你的数据库放在一个API后面,这个API可以同时更新数据库和LED,并且改变任何正在直接更新LED状态数据库的东西来代替与API交互。Flask是一个很好的pythonweb框架,可以使用requests包与之交互。

我建议选择1,但选择2更容易实施。两种解决方案都可以从你的树莓皮。你知道吗

相关问题 更多 >