Also hier ist mein Problem: Ich erstellte eine Heroku-App, die wie erwartet funktioniert, obwohl beim Neustart der App alle neuen Datensätze in der Datenbank gelöscht werden. Diejenigen aus meiner lokalen Datenbank, die kopiert wurden, als ich "nach Heroku" schob, sind immer noch da.Hinzugefügt Datenbank Datensätze werden nach dem Neustart App gelöscht (heroku/SQLAlchemy)
Ich bin neu in PostgresSQL, aber ich folge sorgfältig Anweisungen, um meinen Code zu Heroku zu implementieren und die Datenbank einzurichten. Hier ist ein Teil meiner Konfiguration:
# defines the full path for the database
DATABASE_PATH = os.path.join(basedir, DATABASE)
# the database uri
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + DATABASE_PATH
Ich weiß, dass letzte Zeile ist nicht, wie eine Verbindung mit einem Heroku db aufgebaut werden soll (SQLite), obwohl ich immer noch wissen möchte, was geschieht.
Wenn ich Daten zu meiner Datenbank hinzufüge, verwende ich db.session.add (data) und db.session.commit(). Ich habe eine Heroku Datenbank wie folgt:
$ heroku addons:create heroku-postgresql:hobby-dev
Was passiert, wenn die Anwendung neu gestartet wird? Vermutlich vermisse ich etwas Offensichtliches.
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)
Dank!
Ich weiß nicht über Heroku, aber 'sqlite: ///' sagt mir, dass Sie keine Verbindung zu postgresql –
Das ist, was ich dachte, obwohl ich immer noch gerne wissen würde, was genau los ist. Wenn kein Neustart stattfindet, verschwinden die Daten nicht. Und warum die Daten aus der lokalen Datenbank kopiert werden und nicht verschwinden. – Baekel
Können Sie Ihren Code zeigen, der in die db schreibt? –