【问题标题】:Added database records are deleted after restarting app (heroku/SQLAlchemy)添加的数据库记录在重新启动应用程序后被删除(heroku/SQLAlchemy)
【发布时间】:2016-07-27 01:52:01
【问题描述】:

所以这是我的问题:我创建了一个按预期工作的 heroku 应用程序,尽管当应用程序重新启动时,数据库中的所有新记录都被删除。我“推送到heroku”时复制的本地数据库中的那些仍然存在。

我是 PostgresSQL 的新手,但我仔细按照说明将我的代码部署到 heroku 并设置数据库。这是我的部分配置:

# defines the full path for the database
DATABASE_PATH = os.path.join(basedir, DATABASE)
# the database uri
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + DATABASE_PATH

我知道最后一行不是应该如何建立与 heroku db 的连接 (sqlite),但我仍然想知道发生了什么。

当我将数据添加到我的数据库时,我使用 db.session.add(data) 和 db.session.commit()。 我像这样创建了一个heroku数据库:

$ heroku addons:create heroku-postgresql:hobby-dev

应用重新启动时会发生什么?我可能遗漏了一些明显的东西。

编辑

@admin_blueprint.route('/modify/add-post/',methods=['GET', 'POST'])
@login_required
def add_post():
    error = None
    form = AddPostForm(request.form)
    if request.method == 'POST':
        if form.validate_on_submit():
            now=datetime.datetime.now()  
            poster=session['adminname']
            new_post = Post(form.text.data,poster, now,form.add_file.data)
            db.session.add(new_post)
            db.session.commit()

            return redirect(url_for('home.posts'))
        else: 
            return render_template("adm_posts.html",error=error,form=form)

    if request.method == 'GET':
        return render_template("adm_posts.html",form=form)

谢谢!

【问题讨论】:

  • 我不知道heroku,但是sqlite:///告诉我你没有连接到postgresql
  • 我就是这么想的,虽然我还是想知道到底发生了什么。因为当没有重新启动时,数据不会消失。以及为什么本地数据库中的数据被复制并且不会消失。
  • 你能展示你正在写入数据库的代码吗?
  • 我认为这是对您问题的回答:stackoverflow.com/a/13552761/1306528。您需要以某种方式切换到 postgres(请参阅 heroku 上的文档)

标签: python sql postgresql heroku flask-sqlalchemy


【解决方案1】:

两件事 - 1) 您使用 Heroku 在环境中提供的配置连接到您的 PostgreSQL 实例。只需使用:

import os
SQL_ALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']

环境变量DATABASE_URL 将由 Heroku 填充,并具有连接信息(主机、用户名、密码、数据库)。

2) Heroku 文件系统是短暂的,并且不会在 dyno 重新启动之间持续存在。这就是您的sqlite 数据库消失的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多