使用基于 MySQL 数据库的 Flask 更新网页。
Posted
技术标签:
【中文标题】使用基于 MySQL 数据库的 Flask 更新网页。【英文标题】:Updating the webpage using Flask based on MySQL database. 【发布时间】:2013-01-30 00:03:48 【问题描述】:我有一个网页(使用 html 和 jQuery 构建),它显示来自 mysql 数据库的数据。我正在使用 Flask 将 HTML 与我的数据库连接起来。但是,我的数据库每 15 分钟更新一次(使用单独的 Python 脚本)。目前,我停止烧瓶服务器,更新数据库并重新启动烧瓶以更新网页。我的问题如下:
有没有办法在后台更新 MySQL 数据库而无需停止烧瓶服务器?我阅读了有关 AJAX 和 CRON 的概念,但是我无法理解如何将它们与烧瓶异步使用。
注意:我是 Web 应用程序的新手,这是我第一个涉及连接客户端和服务器端的项目。任何帮助将不胜感激。
谢谢
【问题讨论】:
如果你不停止 Flask 服务器会发生什么,你会得到什么错误? 你说你的数据库每15分钟更新一次,然后问有没有后台更新MySQL数据库的方法。据我所知,这就是你已经用那个单独的 python 脚本做的事情。我真的不明白你在这里问什么。 【参考方案1】:你很可能会做这样的事情:
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)
这样,您的视图将在您的数据更新时更新 - 您无需重新启动服务器即可获取对数据的更改。
【讨论】:
是的,这正是我想要的。我没有从控制器内部连接到我的数据库。非常感谢:) 您能否使用 jquery Ajax 和刷新间隔回答这个问题??? 5分钟。 TIA。我认为是从浏览器更新视图..... 有点跑题了,但是在控制器外部启动的对象在什么范围内存在?仅在应用程序第一次启动时初始化?跨请求持续存在?以上是关于使用基于 MySQL 数据库的 Flask 更新网页。的主要内容,如果未能解决你的问题,请参考以下文章
如何用flask实现一个web应用来显示在mysql数据库中查询到的内容