【问题标题】:Flask sqlAlchemy is deleting the data in the database on every exit of terminalFlask sqlAlchemy 在终端每次退出时删除数据库中的数据
【发布时间】:2017-07-14 20:01:52
【问题描述】:

我按照快速入门页面中提供的说明进行操作 http://flask-sqlalchemy.pocoo.org/2.1/quickstart/#quickstart。 但即使在执行 autoflush : false 和 autocommit : false 之后,每次我退出终端时数据库都会被删除。

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app, session_options={"autoflush":False,"autocommit":False})

在此配置之后,每次我退出烧瓶终端时,数据库数据仍然存在 被删除!

>>> users = User.query.all()
[<User u'admin'>, <User u'guest'>]
>>> admin = User.query.filter_by(username='admin').first()
<User u'admin'>

每次我退出烧瓶终端时,整个用户表都消失了!

PS:非常感谢任何具有基于烧瓶和角度令牌的身份验证的博客 :) 以及 SQLAlchemy 设置!

【问题讨论】:

  • 您是否将创建的对象添加到会话并提交会话?你能发布整个代码吗?是否在应用程序运行时检查数据是否写入数据库?
  • 帮助他人帮助你并提供minimal reproducible example
  • @IljaEverilä 解决了,我使用了 Schema 和 db.Model 一切都很顺利,我正在执行 db.session.commit,但它仍然在删除它。
  • @PerunSS 我已经做到了!但问题是另一回事。

标签: python python-3.x sqlite flask flask-sqlalchemy


【解决方案1】:

这很可能是因为您没有将添加内容提交到数据库中。查看 SQLAlchemy 文档中的this,并看到它说“将数据插入数据库是一个三步过程”。您必须添加:

>>> db.session.add(admin)
>>> db.session.commit()

我相信这可以通过将“autocommit”设置为“True”来实现,但我没有尝试过这种方法。

【讨论】:

  • 解决了,我使用了 Schema 和 db.Model 一切都很顺利,我正在执行 db.session.commit,但它仍然在删除它
  • @RaghavendraSS 如果您设法解决了此问题,您能否在此处发布答案。因为我也面临同样的问题
猜你喜欢
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
相关资源
最近更新 更多