【问题标题】:MySQL function/script to send data to a webhook when table XYZ is updatedMySQL 函数/脚本在更新表 XYZ 时将数据发送到 webhook
【发布时间】:2021-09-05 01:08:34
【问题描述】:

我认为“当 XYZ 表中的行更新时将数据发送到 webhook”这一整件事仅通过 MySQL 查询是不可能的。但是,我正在尝试找出一种方法来自动化该过程。谁能分享一些可以做到这一点的示例方法?

这是我打算自动化的内容:

  • 每当更新表 XYZ 中的任何行时
  • 脚本应将数据从表 ABC、DEF(连接到先前 XYZ 表的表)发送到 webhook URL。

我遇到的最大问题是这个 MySQL 数据库是本地存储的,所以我必须在本地运行脚本,否则我会使用 Zapier。

只需要了解我应该使用哪些程序或脚本。

谢谢

【问题讨论】:

标签: python mysql database windows automation


【解决方案1】:

你是正确的,你不能用纯 MySQL 做到这一点:除非你向你的 MySQL 服务器添加一个有点狡猾的扩展,否则它无法发起任何操作。

您可以在 XYZ 表上的 UPDATE 上创建一个触发器(也可能在 INSERT 上创建另一个触发器)。触发器会将一行插入到名为 webhook_queue 的新表中。

一个单独的 webhook 程序会每隔几秒运行一次 SELECT,然后从该 webhook_queue 表中删除所有行,然后发送每个 webhook。这种方法显然存在延迟问题:在 webhook 程序唤醒并开始工作之前,不会发送 webhook。

如果这对您不起作用,您可能必须修改应用程序代码以在更新每一行时调用 webhook。

【讨论】:

    【解决方案2】:

    选项有:

    • 修改更新数据库的客户端应用程序代码。事务提交后,然后从客户端应用程序通知 webhook。在提交之后执行此操作很重要,否则您可以通知 webhook 有关随后回滚的数据。

    • 使用二进制日志尾部,例如Debezium。这有几个优点:只有在提交时才会将更改添加到二进制日志中,因此二进制日志尾部永远不会看到已回滚的更改。这不需要您修改客户端代码。即使数据由多个客户端更新,甚至由使用交互式客户端的人更新,它也能正常工作。

    【讨论】:

      猜你喜欢
      • 2018-09-11
      • 2021-08-12
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      相关资源
      最近更新 更多