动态数据不会在烧瓶中改变

Posted

技术标签:

【中文标题】动态数据不会在烧瓶中改变【英文标题】:Dynamic data wont change in flask 【发布时间】:2020-07-08 11:22:25 【问题描述】:

我正在尝试在烧瓶中创建一个 API,但是当我加载 API 然后更改数据库中的数据并重新加载页面时,除非我重新启动程序,否则数据不会改变。当程序运行并且我更改数据库中的数据时,我该如何做到这一点,当我在浏览器中刷新 API 时会看到它?提前致谢。

代码如下:

from flask import Flask, jsonify, request 
import pymysql.cursors

connection = pymysql.connect(host='127.0.0.1',
user='root',
password='myroot',
db='test',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)

app = Flask(__name__) 

@app.route('/', methods=['GET'])
def test():
    with connection.cursor() as cursor:
        connection.connect()
        sql = "SELECT * FROM importantData"
        cursor.execute(sql)
        result = cursor.fetchall()
    return jsonify(result)

@app.route('/locations', methods=['GET'])
def test1():
    with connection.cursor() as cursor:
        connection.connect()
        sql = "SELECT * FROM locations"
        cursor.execute(sql)
        result = cursor.fetchall()
    return jsonify(result)


    if __name__ == '__main__':
        app.run(port=8080) 

编辑: 解决方案是我必须在每个路由函数中打开数据库连接,编辑代码,使其按预期工作。

【问题讨论】:

【参考方案1】:

我从来没有用过pymysql,你的代码除了那部分看起来还不错:

result = cursor.fetchone()

当您显然是select * 选择所有内容时,为什么还要fetchone()I change data in database 是什么意思,你是换行了,还是插入了新行?

无论如何,您似乎只选择了带有fetchone() 的第一行,因此即使您更改了其他内容,或者添加了新行,您也永远不会看到新的修改

【讨论】:

感谢您指出我目前将其更改为 fetchall 但我遇到的问题是 API 处于活动状态时,如果我更改数据并在浏览器上刷新 API 数据不会,而是停留在以前的值上 您仍然没有回答我的问题。您是否更改了第一行,但您仍然看到它的旧版本,或者您添加了新行,即使在您之后它们也没有出现已将fetchone() 更改为fetchall() 两者,我更改了第一行并添加了第二行,但新数据未显示【参考方案2】:

解决方案是我必须在每个路由函数中打开数据库连接,编辑代码,现在它可以正常工作

【讨论】:

以上是关于动态数据不会在烧瓶中改变的主要内容,如果未能解决你的问题,请参考以下文章

在烧瓶 wtforms jinja select 上设置动态数据属性

如何动态选择要在烧瓶中使用的模板目录?

如何使用烧瓶创建动态文件发送算法

在 Elastic Beanstalk 中扩展实例会破坏 python 烧瓶应用程序的动态图像链接

当组件在本机反应中重新呈现时,动态不透明度不会改变

除非重新启动烧瓶服务器,否则条目的默认 datetime.now 值不会改变