Данные Dynami c не изменятся в flask - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь создать API в flask, но когда я загружаю API, а затем изменяю данные в базе данных и перезагружаю страницу, данные не изменяются, пока я не перезапущу программу. Как сделать так, чтобы при запуске программы и изменении данных в базе данных я видел ее при обновлении sh 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 Ответ

0 голосов
/ 27 марта 2020

Я никогда не использовал py mysql, и ваш код выглядит хорошо, за исключением этой части:

result = cursor.fetchone()

Почему fetchone(), когда вы явно select * выбираете все? Что вы подразумеваете под I change data in database, изменили ли вы строку или вставили новую строку?

В любом случае похоже, что вы выбираете только первую строку с fetchone(), так что даже если вы изменил что-то еще, или если вы добавили новую строку, вы никогда не увидите новые модификации

...