基于MySQL数据库使用Flask更新网页。

3 投票
1 回答
5317 浏览
提问于 2025-04-17 15:51

我有一个网页(是用HTML和jQuery做的),它显示的是来自MySQL数据库的数据。我用Flask来把HTML和我的数据库连接起来。不过,我的数据库每15分钟就会更新一次(是通过一个单独的Python脚本来更新的)。现在,我每次都得停掉Flask服务器,更新数据库,然后再重启Flask,才能让网页显示最新的数据。我的问题是:

有没有办法在不停止Flask服务器的情况下,在后台更新MySQL数据库?我听说过AJAX和CRON这些概念,但我不太明白怎么把它们和Flask一起用,做到异步更新。

注意:我还是个新手,这是我第一个涉及客户端和服务器端连接的网页项目。任何帮助都非常感谢。

谢谢

1 个回答

11

你很可能在做这样的事情:

from flask import Flask, render_template
from yourMySqlLibrary import connect_to_mysql

conn = connect_to_mysql()
# This is only executed when you start the script
data = conn.execute("SELECT * FROM MySemiRegularlyUpdatedTable")

app = Flask(__name__)

@app.route("/")
def view_data():
    return render_template("view_data.html", data=data)

if __name__ == "__main__":
    app.run()

如果是这样的话,你的解决办法就是把连接数据库和查询的代码放到你的控制器里,这样每次你访问页面的时候,数据库都会重新查询一次:

@app.route("/")
def view_data():
    # Removed from above and placed here
    # The connection is made to the database for each request
    conn = connect_to_mysql()
    # This is only executed on every request
    data = conn.execute("SELECT * FROM MySemiRegularlyUpdatedTable")
    return render_template("view_data.html", data=data)

这样一来,当你的数据更新时,视图也会自动更新,你就不需要重启服务器来获取数据的变化了。

撰写回答