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

重新启动Python Flask/SQLAlchemy项目时数据丢失,python,flask,gunicorn,Python,Flask,Gunicorn,我继承了一个Flask/SQLAlchemy网站,并正在尝试将其打开。项目运行良好,所有功能均按预期运行。然而,数据库似乎并没有持久化 如果我在站点上创建了一个新对象(本例中为客户),则所有内容都会正确显示。如果我关闭应用程序并将其恢复,所有创建的数据都将消失 我确信这是站点上的某种配置,但我对Flask还不太熟悉,无法进行补救 这是一个企业应用程序,所以不能发布代码,但是我可以得到一些一般的提示吗 更新 以下是创建新对象时的SQLAlchemy日志示例: ... 2017-10-18 18:

我继承了一个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
我将应用程序切换到生产环境,现在它似乎正在执行提交

但是,当我关闭应用程序并将其恢复时,数据不会持久化。

首先,SQLAlchemy会话上是否有commit()调用

将烧瓶配置属性“SQLALCHEMY_ECHO”设置为True将导致所有DB查询打印到标准输出:

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

启用SQLALCHEMY_ECHO后,您可以观察数据库通信量,以查看更新SQLALCHEMY会话中的对象是否会导致数据库更新,并最终提交或回滚。

Update issue对此做出响应。我切换到生产环境,现在看到提交正在进行,但是终止程序并将其恢复会恢复所有数据。您可以独立于应用程序查看数据库吗?e、 在你关闭应用程序之后,但在你重新启动之前,请注意。好的,看起来我在重新启动之前数据库中有数据。因此,有关启动过程的某些内容是清除数据库,看看环境变量APP_CONFIG是否指向一个配置文件,该文件在启动应用程序之前正在重新创建数据库。这很难说(就像我说的,我继承了这个项目,不熟悉flask),但是
database.py
文件调用
database\u sample\u data.build\u defaults\u db
。然而,注释掉这一点似乎并不能阻止数据库清除。我不确定还有什么比这更重要。事实上,每次启动数据库时,似乎都有样本数据覆盖了我的数据库。这是不可取的。我不确定这是定制代码还是标准烧瓶。