我有一个脚本在运行,当数据被添加到数据库时,我想要处理它。
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)但是,如果通过不同连接插入行,则此连接不会显示它。
例如,如果我通过第三方应用程序连接到我的数据库,并将一行插入到
但是,如果我重新启动上面的脚本,它就会出现。
有什么想法吗?
发布于 2018-12-05 11:41:37
使用消息队列(例如RabbitMQ)。让第三方应用程序使用它。消息队列实现具有更好的异步处理信息的API。即使您只使用消息队列来存储数据库内容的主键。
或者启用二进制日志记录,并使用a replication protocol library处理事件。
发布于 2021-04-07 15:52:55
我刚刚遇到了同样的错误。解决这个问题最简单的方法就是...在循环中定义mydb和mycursor。
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)https://stackoverflow.com/questions/53624776
复制相似问题