重新启动应用程序(heroku/SQLAlchemy)后,添加的数据库记录将被删除



所以我的问题是:我创建了一个运行正常的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数据库的连接(sqlite),尽管我仍然想知道发生了什么。

当我向数据库中添加数据时,我使用db.section.add(data)和db.section.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)

谢谢!

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新