首页 > 解决方案 > mysql.connector 未检测到数据的外部更改

问题描述

我有一个正在运行的脚本,我想在将数据添加到数据库时对其进行处理。

import mysql.connector
import time

wait_time = 2

mydb = mysql.connector.connect(
  host="localhost",
  user="xxx",
  passwd="yyy",
  database="my_database"
)
mycursor = mydb.cursor()

while True:
    sql = "SELECT * FROM data WHERE processed = 0"
    mycursor.execute(sql)
    records = mycursor.fetchall()
    for i, r in enumerate(records):
        print(r)
    time.sleep(wait_time)

但是,如果通过不同的连接插入一行,则此连接不会显示它。

即,如果我通过第三方应用程序连接到我的数据库,并插入一行到

但是,如果我重新启动上述脚本,它就会出现。

有任何想法吗?

标签: pythonmysql

解决方案


使用消息队列(例如 RabbitMQ)。获取第三方App使用。消息队列实现具有更好的异步处理信息的 API。即使你只是使用消息队列来存储数据库内容的主键。

或者启用二进制日志记录并使用复制协议库来处理事件。


推荐阅读