Skip to main content
 首页 » 编程设计

python之sqlalchemy 中关于另一个应用程序创建的新行的通知

2025年05月04日7qlqwjy

两个应用程序正在使用同一个 MSSQL 数据库。

我的应用程序正在使用 sqlalchemy与 pymssql并希望在另一个应用程序将行添加到特定表时收到通知。

正确的做法是什么?

请您参考如下方法:

让我们称您的应用程序为“消费者”,另一个应用程序为“生产者”。

有多种方法,最适合的方法取决于您期望有多少记录、生产者和消费者。

  1. 对于少量记录、生产者和消费者实例,您可以向表中添加一个“ack”字段,并将false 作为默认值。新条目应将此字段设置为 false,以便其他应用程序可以在处理新条目后将“ack”设置为 true。
  2. 您可以将表用作队列,生产者实例在其中插入新记录,而消费者实例在复制到最终目标表后删除记录。
  3. 为了获得最大的可扩展性,您可以使用类似 AMQP 的东西管理消费者和生产者之间的沟通

请注意,任何涉及轮询数据库更改的算法都可能对底层 DBMS 造成沉重负担。

[更新]

来自van的建议:

Just for completeless of the possibilities: you could also use AFTER INSERT triggers to store either a flag or a TableName and a PrimaryKey of the newly inserted/updated row in some helper table, which your SA application would poll regularly. However, be careful as inserts from SA would also trigger the trigger. – van