我继承了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
我将应用程序切换到生产环境,它现在似乎正在执行提交。
但是,当我杀死应用程序并将其恢复时,数据不会持续存在。
答案 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或回滚。