某些设备将值异步存储在公共远程 MySQL 数据库服务器上。
我想用Python(可能还有SQLAlchemy)编写一个主管应用程序来识别数据库上的外部INSERT事件并对最后一行的数据采取行动。这是为了避免长时间的手动测试来查看每个表是否定期更新或记录器是否崩溃。
有人可以告诉我在哪里可以在线搜索此类信息,更好的是,举个例子吗?
编辑
我已经使用日期时间主键 ({date_time}) 定期读取所有表,加载每个表的最后一行,并与之前的值进行比较:
SELECT * FROM table ORDER BY date_time DESC LIMIT 1
但它看起来非常麻烦,并且不能保证我在连续的数据库检查之间不会丢失一些行。
引擎是旧版本的 INNODB,我无法升级:我无法在架构中使用 UPDATE 字段,因为它根本不起作用。
重写我的问题: 如何使用类似守护进程的 Python 应用程序(睡眠线程)侦听任何数据库事件,并仅在发生某些情况时才唤醒?
我还想避免 SQL 触发器,因为这太繁重而难以管理:表有数百个,并且根据活动记录器经常添加/删除它们。
我查看了 SQLAlchemy,但我能找到的所有参考资料(如果我没有误解的话)都是对 SQLAlchemy 本身所做的 INSERT 进行操作的装饰器。我没有找到任何有关数据库外部更改的信息。
关于示例请求:我对复制粘贴不感兴趣,因为首先我想了解东西是如何工作的。我更喜欢(甚至不完整的)示例,因为 SQLAlchemy 文档对于我的知识来说太深了,我根本无法将各个部分组合在一起。
您需要数据库中的触发器。
如果您想根据触发器处理应用程序中的某些业务逻辑 - 请查看监听通知流程。
例如看这里Postgres通知:在表中创建/删除/更新行时使用行ID进行通知以获取Postgresql中的工作监听通知