扫描MySQL表以获取Python更新

扫描MySQL表以获取Python更新,python,mysql,Python,Mysql,我正在创建一个依赖于MySQL表中信息的GUI,我希望能够做到的是在每次使用新数据更新表时显示一条消息。我不知道怎么做,甚至不知道这是否可能。我有检索最新MySQL更新的代码,但我不知道如何在每次新数据进入表时都有一条消息。谢谢 非常简单直接的解决方案就是从表中轮询最新的autoincrement id,并将其与上次轮询中看到的内容进行比较。如果它更大-您有新的数据。这被称为“主动轮询”,它很容易实现,如果您不经常这样做,它就足够了。因此,您必须将最后一个id值存储在GUI中的某个位置。请注意,

我正在创建一个依赖于MySQL表中信息的GUI,我希望能够做到的是在每次使用新数据更新表时显示一条消息。我不知道怎么做,甚至不知道这是否可能。我有检索最新MySQL更新的代码,但我不知道如何在每次新数据进入表时都有一条消息。谢谢

非常简单直接的解决方案就是从表中轮询最新的autoincrement id,并将其与上次轮询中看到的内容进行比较。如果它更大-您有新的数据。这被称为“主动轮询”,它很容易实现,如果您不经常这样做,它就足够了。因此,您必须将最后一个id值存储在GUI中的某个位置。请注意,当您重新启动GUI应用程序时,此存储值将重置-请确保在GUI启动时考虑要做什么。可能您只需要跟踪GUI运行时发生的插入-然后,在GUI启动时,您只需轮询并存储当前id值,然后逐段轮询并对其更改作出反应。

非常简单而直接的解决方案就是从表中轮询最新的自动增量id,并将其与您在上一次投票中看到的结果进行比较。如果它更大-您有新的数据。这被称为“主动轮询”,它很容易实现,如果您不经常这样做,它就足够了。因此,您必须将最后一个id值存储在GUI中的某个位置。请注意,当您重新启动GUI应用程序时,此存储值将重置-请确保在GUI启动时考虑要做什么。可能您只需要跟踪GUI运行时发生的插入-然后,在GUI启动时,您只需要轮询并存储当前id值,然后按周期轮询并对其更改作出反应。

@spacediver提供了一些关于主动轮询方法的好建议。我还想发布一些其他选项

您可以使用某种类型的消息传递在客户端之间传递通知。ZeroMQ、twisted等提供了这些功能。一种方法是让更新客户端在成功插入数据库的同时发出消息。客户端都可以监听一个通道以获取通知,而不是总是轮询数据库

如果无法控制向执行插入的客户机添加更新消息,还可以查看是否使用数据库触发器调用脚本,该脚本只需向消息传递框架发出更新消息。它解释了如何安装UDF扩展以允许您在触发器中运行sys_exec命令并调用简单脚本


这样,客户机只需响应通知,而不是定期进行所有检查

@spacediver就主动轮询方法给出了一些很好的建议。我还想发布一些其他选项

您可以使用某种类型的消息传递在客户端之间传递通知。ZeroMQ、twisted等提供了这些功能。一种方法是让更新客户端在成功插入数据库的同时发出消息。客户端都可以监听一个通道以获取通知,而不是总是轮询数据库

如果无法控制向执行插入的客户机添加更新消息,还可以查看是否使用数据库触发器调用脚本,该脚本只需向消息传递框架发出更新消息。它解释了如何安装UDF扩展以允许您在触发器中运行sys_exec命令并调用简单脚本


这样,客户机只需响应通知,而不是定期进行所有检查

一,。您是否控制插入的源?。。您能将其展开以通知GUI显示消息吗?。。比如说,通过发送一些消息?2.表更新后,您的邮件需要多长时间?。。消息是否可以在更新发生后的1秒内显示?.1。您是否控制插入的源?。。您能将其展开以通知GUI显示消息吗?。。比如说,通过发送一些消息?2.表更新后,您的邮件需要多长时间?。。在更新发生后的1秒钟内显示消息可以吗?是的,消息传递看起来更好,但安装和管理起来更麻烦。我希望作者能够考虑出交互代码,以便在时机成熟时将方案切换到某种消息传递。@spacediver:同意。您必须设置另一层来传递消息,尽管如果它是一个庞大的系统,那么它是值得的。如果用户不需要即时通知,并且可以将间隔设置得更长一些,那么轮询选项是很好的。是的,消息传递看起来更好,但是设置和管理起来更麻烦。我希望作者能够考虑出交互代码,以便在时机成熟时将方案切换到某种消息传递。@spacediver:同意。您必须设置另一层才能传递消息 不过,如果这是一个庞大的系统,那么它是值得的。如果用户不需要即时通知,并且可以将间隔设置得更长一些,则轮询选项很好。