基于MySQL数据库使用Flask更新网页。
我有一个网页(是用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)
这样一来,当你的数据更新时,视图也会自动更新,你就不需要重启服务器来获取数据的变化了。