Flask 中的动态数据不会改变
Dynamic data wont change in flask
我正在尝试在 flask 中制作一个 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)
编辑:
解决方案是我必须在每个路由函数中打开数据库连接,编辑代码,现在它可以正常工作了。
我从未使用过 pymysql,你的代码看起来不错,除了那部分:
result = cursor.fetchone()
为什么 fetchone()
明明 select *
选择了所有内容? I change data in database
是什么意思,您是更改了一行,还是插入了新行?
无论如何,看起来您只选择了 fetchone()
的第一行,所以即使您更改了其他内容,或者添加了新行,您也永远不会看到新的修改
解决方案是我必须在每个路由函数中打开数据库连接,编辑代码,现在它可以正常工作了
我正在尝试在 flask 中制作一个 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)
编辑: 解决方案是我必须在每个路由函数中打开数据库连接,编辑代码,现在它可以正常工作了。
我从未使用过 pymysql,你的代码看起来不错,除了那部分:
result = cursor.fetchone()
为什么 fetchone()
明明 select *
选择了所有内容? I change data in database
是什么意思,您是更改了一行,还是插入了新行?
无论如何,看起来您只选择了 fetchone()
的第一行,所以即使您更改了其他内容,或者添加了新行,您也永远不会看到新的修改
解决方案是我必须在每个路由函数中打开数据库连接,编辑代码,现在它可以正常工作了