python - Peewee 的 Flask 仅在重新启动时获取新数据

标签 python mysql flask peewee

我的 Flask + Peewee 应用程序遇到了一个非常奇怪的问题。

我有一个将数据插入 MySQL 数据库的网络应用程序。

我的 Flask 应用程序还通过 peewee 连接到该数据库。

问题是,当我使用 web 应用程序插入某些内容时,如果我在 Flask 应用程序中对数据库进行选择,它将返回 Flask 应用程序启动时可用的数据。获取新数据使用相同的选择,我需要重新启动 Flask 服务器服务才能获取新数据。

有谁知道发生了什么吗?

更新

我发现了这个问题。它与 peewee 没有直接关系,而是与 Flask 相关。

我有这样的东西:

def some_method(id, user_id, date_from = datetime.now(), limit = 50):

似乎当我这样做时,date_from 是用编译的日期时间设置的。之后,所有使用它的请求都将始终使用该日期时间。

改为:

def some_method(id, user_id, date_from = None, limit = 50):

   if (date_from is None):
     date_from = datetime.now()

它开始工作。

我正在与像我一样可能遇到同样问题的其他人分享此内容。

最佳答案

这是 Web 应用程序的预期行为。 HTTP 是一种无状态协议(protocol),这意味着您的 Web 应用程序的前端无法知道后端的状态是否已更改,除非它发出新的请求。因此,只有重新启动 Flask 应用程序后,您的后端更改才可见。根据您的代码,您可能还可以通过刷新浏览器看到更改。

如果您想立即看到更改而不需要重新启动/刷新,请了解如何使用 Javascript 查询更改并更新前端 DOM。您可以从学习 jquery 或 React/Vue/Angular 等现代框架开始。

关于python - Peewee 的 Flask 仅在重新启动时获取新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52285458/

相关文章:

MySQL 按 $variable 排序

python - 通过表单发送表格数据到 Flask 方法

python - 我的 Flask python 应用程序需要进行哪些更改才能使用 MySQL 数据库?

python - 绘制按小时和星期几分组的时间序列

python - GAE(Python)最佳实践 : Load config from JSON file or Datastore?

python - DRF get_permissions 似乎无法正常工作

mysql - 无法更新存储函数/触发器中的表 'transaction',因为它已被调用此存储函数/触发器的语句使用

python - 与子流程模块并发。我怎样才能做到这一点?

java - 无法连接到 Openshift mySQL

html - 如何修复 Flask 路由中使用变量时的 CSS 404 错误