#python #mysql #flask
#python #mysql #flask
Вопрос:
Этот coe должен отображать все записи, находящиеся в данный момент в базе данных, но это не так. При перезагрузке страницы на ней не отображаются последние строки, добавленные в базу данных.
mod = Blueprint('home', __name__)
conn = engine.connect()
def grabData():
query = text(
"SELECT * FROM "
"users "
"ORDER BY id DESC "
)
rows = conn.execute(query).fetchall()
return rows
@mod.route('/')
def home():
return render_template('index.html', result=grabData())
MySQL Workbench показывает, что новые строки есть. После перезапуска приложения flask отображаются новые строки.
Я также пытался поместить запрос внутрь home()
, но это тоже не сработало. Есть идеи, что я делаю не так?
Комментарии:
1. Что заставляет вас думать, что это не работает? Если данные в базе данных не изменяются, «новый набор данных» также всегда будет одним и тем же.
2. У меня есть код, который добавляет запись в базу данных, и когда я обновляю страницу, он не выдает мне последний набор строк.
3. Но, возможно, тот код, который добавляет запись в базу данных, не работает? Вы
COMMIT
вносите свои изменения?4. Я смотрю на базу данных, я вижу строку в базе данных….
5. Какая база данных? Как вы на это смотрите? Что произойдет, если вы перезапустите базу данных? Что произойдет, если вы перезапустите приложение flask?
Ответ №1:
Прежде всего я хочу поблагодарить всех за комментарии, я нашел ответ, и я надеялся, что пользователь @davidism опубликовал бы его, но я думаю, что я это сделаю, но это полная заслуга его.
Итак, его комментарий был, я цитирую, «Не открывайте соединение глобально, открывайте его для каждого запроса». Итак, что я сделал? Я только открывал соединение с БД для каждого запроса, и это фактически решило мою проблему.
Вместо кода в исходном сообщении, это то, что я в конечном итоге сделал, чтобы заставить его работать.
mod = Blueprint('home', __name__)
def grabData():
conn = engine.connect()
query = text(
"SELECT * FROM "
"users "
"ORDER BY id DESC "
)
rows = conn.execute(query).fetchall()
conn.close()
return rows
@mod.route('/')
def home():
return render_template('index.html', result=grabData())