syf1313113 发表于 2022-1-8 22:21

python实时监控数据库的新数据

本帖最后由 syf1313113 于 2022-1-9 00:29 编辑

想用python监控数据库,但是不想在数据库中加触发器,从网上搜了下有点思路但是不知道该怎么写

用python查数据库 然后记录下最新一个数据的id(表中id是自增的),然后过一段时间后 从记录的id开始查数据库 然后再记录一个最新的id,下次再从本次记录的id开始查

有大佬能实现吗 求段代码学习学习(最好有点注释的那种)


面向百度编程选手自己瞎写了一下 能实现想要的功能,但是不知道有什么不妥的地方吗

贴代码:
# 定义一个空的列表,用于存放数据库中查询出来的最后一个id
data = []

def index():

    # 判断 如果data为空,即第一次查询 就查询最后一条数据并把它的id添加到data
    if data == []:
      # sql:ORDER BY id DESC LIMIT 1 即反向查询的第一条数据,也就是最后一条
      sql = "select * from po ORDER BY id DESC LIMIT 1"
      # 将sql传给test2,调用方法
      data2 = test2(sql)
      # 添加id到data
      data.append(data2[-1])
    # 如果不是第一次查询
    else:
      # 从上次次记录的id开始查往后的5条数据
      sql = "select * from po limit %s,5"%data
      data2 = test2(sql)
      # 判断:只有查询出来的数据不为空时,即每次查询都要有有新数据才能执行
      if data2 != ():
            # 将最新的id替换之前的id
            data = (data2[-1])

    return jsonify(data2,data)

arryboom 发表于 2022-1-8 22:55

不用,建表时候加个created_time自动时间戳字段,然后查询时候直接order by created_time limit 1

syf1313113 发表于 2022-1-8 23:13

arryboom 发表于 2022-1-8 22:55
不用,建表时候加个created_time自动时间戳字段,然后查询时候直接order by created_time limit 1

你这个是查一条最新的记录吗。现在问题是不知道这一次查距离上次查 这个时间段内总共更新了几条数据

arryboom 发表于 2022-1-8 23:40

syf1313113 发表于 2022-1-8 23:13
你这个是查一条最新的记录吗。现在问题是不知道这一次查距离上次查 这个时间段内总共更新了几条数据

对,这个是最新的一条记录,如果你要按时间段查那只能你一开始说的方法了

bymlgA 发表于 2022-1-9 10:06

大神{:1_893:},纯表情阅读

bingbingbd 发表于 2022-1-9 10:45

不是很懂,只能膜拜了

colinjian22 发表于 2022-1-9 11:07

太久没和PYTHON打交道了,都忘记得差不多了。

kicebeauty 发表于 2022-1-9 14:23

是binlog不好用了吗

syf1313113 发表于 2022-1-9 14:48

kicebeauty 发表于 2022-1-9 14:23
是binlog不好用了吗

数据库没开日志 只有报错日志

namedlxd 发表于 2022-1-9 14:52

mysql可以订阅binlog,没开的话开一下就行了
页: [1]
查看完整版本: python实时监控数据库的新数据