所以这是我的问题:我创建了一个按预期工作的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.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)
谢谢!
答案 0 :(得分:0)
两件事 - 1)使用Heroku在环境中提供的配置连接到PostgreSQL实例。只需使用:
import os
SQL_ALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']
环境变量DATABASE_URL
将由Heroku填充,并具有连接信息(主机,用户名,密码,数据库)。
2)Heroku文件系统短暂,并且在dyno重启之间不会持续存在。这就是你的sqlite
数据库消失的原因。