首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql.connector不检测数据的外部更改

问mysql.connector不检测数据的外部更改
EN

Stack Overflow用户
提问于 2018-12-05 11:32:20
回答 2查看 162关注 0票数 0

我有一个脚本在运行,当数据被添加到数据库时,我想要处理它。

代码语言:javascript
复制
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)

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

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

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

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2018-12-05 11:41:37

使用消息队列(例如RabbitMQ)。让第三方应用程序使用它。消息队列实现具有更好的异步处理信息的API。即使您只使用消息队列来存储数据库内容的主键。

或者启用二进制日志记录,并使用a replication protocol library处理事件。

票数 1
EN

Stack Overflow用户

发布于 2021-04-07 15:52:55

我刚刚遇到了同样的错误。解决这个问题最简单的方法就是...在循环中定义mydb和mycursor。

代码语言:javascript
复制
import mysql.connector
import time

wait_time = 2



while True:
    mydb = mysql.connector.connect(
    host="localhost",
    user="xxx",
    passwd="yyy",
    database="my_database"
   )
    mycursor = mydb.cursor()
    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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53624776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档