【发布时间】: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