私の問題は次のとおりです:アプリケーションが再起動されると、データベースのすべての新しいレコードが削除されます。私が "herokuにプッシュ"したときにコピーされたローカルデータベースのものはまだそこにあります。追加されたデータベースレコードは、アプリケーションの再起動後に削除されます(heroku/SQLAlchemy)
私は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 addons:create heroku-postgresql:hobby-dev
: は、私はそうのようなHerokuのデータベースを作成しましたか?私はおそらく明らかに何かが欠けているでしょう。
EDIT
@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に接続していないことを伝えています –
これは私が思ったことですが、私はまだ何が起こっているのか正確に知りたいです。なぜなら、再起動がなければ、データは消えないからです。そして、なぜローカルデータベースからのデータがコピーされ、消えないのか。 – Baekel
データベースに書き込んでいるコードを表示できますか? –