重新启动Python Flask / SQLAlchemy项目时遗失的数据

时间:2017-10-18 17:52:33

标签: python flask gunicorn

我继承了Flask / SQLAlchemy网站,并试图提出它。该项目运行正常,所有功能都按预期工作。但是,数据库似乎并不存在。

如果我在网站上创建一个新对象(在这种情况下是一个客户),一切都会正确显示。如果我终止应用程序并将其恢复,则所有创建的数据都会消失。

我确信这是网站上的某种配置,但我对Flask的解释不够熟悉。

这是一个企业应用程序,因此无法发布代码,但我可以获得一些常见的提示吗?

更新

以下是创建新对象时的SQLAlchemy日志示例:

...
2017-10-18 18:29:42,827 INFO sqlalchemy.engine.base.Engine INSERT INTO 
captains_rosters_links (created, modified, position, on_duty, 
roster_id, captain_id) VALUES (%s, %s, %s, %s, %s, %s)
2017-10-18 18:29:42,827 INFO sqlalchemy.engine.base.Engine 
(datetime.datetime(2017, 10, 18, 18, 29, 42, 827068), None, 4, 1, 2L, 
3L)
2017-10-18 18:29:42,828 INFO sqlalchemy.engine.base.Engine COMMIT

我将应用程序切换到生产环境,它现在似乎正在执行提交。

但是,当我杀死应用程序并将其恢复时,数据不会持续存在。

1 个答案:

答案 0 :(得分:1)

首先,是否在SQLAlchemy会话上调用了commit()?

设置Flask配置属性' SQLALCHEMY_ECHO' to True将导致所有数据库查询打印到stdout:

application = Flask(__name__)
application.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(application)

启用SQLALCHEMY_ECHO后,您可以查看数据库流量,以查看更新SQLAlchemy会话中的对象是否导致更新数据库并最终进行COMMIT或回滚。