python - Flask SQLAlchemy 未获取更改的记录

标签 python flask-sqlalchemy

我看到 Flask-SQLAlchemy 出现一些意外行为,但我不明白发生了什么:

如果我使用例如更改记录MySQL Workbench 或 Sequel Pro、正在运行的应用程序(无论是在 Apache 上的 WSGI 下运行,还是从命令行运行)都不会接受更改。如果我通过触摸 WSGI 文件或重新加载它(命令行)来重新加载应用程序,我可以看到更改的记录。我已经通过在交互式 shell 中运行 all() 查询来验证这一点,结果是一样的 – 没有任何变化,直到我退出 shell 并重新开始。我感觉我在这里遗漏了一些非常明显的东西 – 它是一个表,没有联接等。 – 在 2.7.3 上运行 MySQL 5.5.19 和 SQLA 0.7.7

最佳答案

您应用程序的 SELECT 可能位于其自己的事务/ session 中,因此另一个 session (例如 MySQL Workbench 连接)提交的更改对于您的 SELECT 尚不可见。您可以通过启用 mysql 常规日志或在 create_engine(...) 定义中设置“echo: false”来轻松验证它。您可能会在 SET AUTOCOMMIT = 0 模式下启动 SQLAlchemy session ,这需要显式提交或回滚(当您重新启动/重新加载时,Flask-SQLAlchemy 会自动为您执行此操作)。尝试以 autocommit=true 模式启动 session ,或者在调用 SELECT 之前坚持显式提交/回滚。

关于python - Flask SQLAlchemy 未获取更改的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645793/

相关文章:

python - 如何在 Kivy 中重置动画的位置

服务器运行时 Python 程序暂停

Python嵌套列表和递归问题

mysql - Flask SQLAlchemy 操作错误 用户访问被拒绝

python - 如何在 SQLAlchemy(python,flask)中为模型用户自身创建多对多关系

python - 将 distinct on (Postgres) 与 SqlAlchemy 一起使用的正确方法是什么?

python - 如何检查 django 表单数据是否为 ​​None、 ' '(空字符串)或 False

python - 如何在 pyomo.environ 模块下创建二维集合对象

python - 在 flask whooshalchemy 中使用 BufferedWriter

python - Flask-Marshmallow 的 init_app() 真的有必要吗?