繁体   English   中英

在一定时间间隔(10秒)后使用flask从不断增加的数据库(如mysql)中获取数据

[英]Fetching data after a certain time interval(10 sec) from a continuously increasing database like mysql using flask

我想使用python和flask创建一个api,它以固定的时间间隔(10秒)从不断增长的数据库中连续提取和存储数据,而我不想获取已经获取的旧数据。

假设您当前有一个API端点,该端点返回所有数据库存储的数据:

@app.route('/data', methods=['post'])
def data():
    all_the_data = Data.query.order_by(Data.created.desc()).all()
    return jsonify(results=all_the_data)

因此,您的ajax调用当前正在执行以下操作:

$.ajax({
    type: "POST",
    url: "/data",
    dataType: "json",
    success: function(data) { 
        console.log(data);
        update_graph(data);
    }
});

您只需要让系统过滤出发生情况的方法,然后返回给客户端即可-因此我们无需查询所有数据,而是可以基于引用进行过滤:

@app.route('/data', methods=['post'])
def data():
    client_data = request.json
    reference = client_data.get('reference')

    if reference:
        # we have a reference, so lets filter the query:
        query_data = Data.query.filter(Data.id>reference).order_by(Data.created.desc()).all()
    else:
        # no reference, so send the lot!
        query_data = Data.query.order_by(Data.created.desc()).all()

    return jsonify(results=query_data)

然后,您的ajax请求需要从它执行的上一个查询中获取最后一个引用-并将其提供给API端点:

$.ajax({
    type: "POST",
    url: "/data",
    data: JSON.stringify({ reference: 999 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data) {
       console.log(data)
       update_graph(data["results"]);
    }
});

因此,您只需要弄清楚如何从您收到的最后一组值中获取该reference值(API可以将其作为另一个键发送回去,或者您可以在javascript中轮询当前的组,等等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM