我看到Flask-SQLAlchemy出现了一些意想不到的行为,我不明白发生了什么:
如果我使用例如对记录进行更改MySQL Workbench或Sequel Pro,正在运行的应用程序(无论是在Apache上的WSGI下运行,还是从命令行运行)都没有发现变化。如果我通过触摸WSGI文件或重新加载它(命令行)重新加载应用程序,我可以看到更改的记录。我已经通过在交互式shell中运行all()
查询来验证这一点,并且它是相同的 - 在我退出shell之前没有变化,然后重新开始。我觉得我错过了一些非常明显的东西 - 它是一个单独的表,没有连接等 - 运行MySQL 5.5.19和2.7.3上的SQLA 0.7.7
答案 0 :(得分:1)
你的应用程序的SELECT可能在它自己的事务/会话中,因此另一个会话(例如MySQL Workbench连接)提交的更改对于SELECT尚不可见。您可以通过启用mysql常规日志或在create_engine(...)定义中设置'echo:false'来轻松验证它。您有可能在SET AUTOCOMMIT = 0模式下启动SQLAlchemy会话,这需要显式提交或回滚(当您重新启动/重新加载时,Flask-SQLAlchemy会自动为您执行此操作)。尝试在autocommit = true模式下启动会话,或在调用SELECT之前坚持显式提交/回滚。