Я создаю страницу видео, которая может отслеживать время воспроизведения и время комментариев, каждый раз, когда я перезагружаю страницу, используя {{ movie.play_num }}
, чтобы отобразить время воспроизведения, оно всегда работает, но оно не изменит базу данных, поэтому я нене знаете, как это может быть правильно?Похоже, session.commit()
не работает.Кроме того, если я добавлю несколько слов в поле комментария и отправлю сообщение, появится waiting for response...
, и сервер будет ждать до истечения времени ожидания.
Вот мой код:
def play(id=None):
movie = Movie.query.join(Tag).filter(
Tag.id == Movie.tag_id,
Movie.id == int(id)
).first_or_404()
form = CommentForm()
if "user" in session and form.validate_on_submit():
data = form.data
comment = Comment(
content=data["content"],
movie_id=movie.id,
user_id=session["user_id"]
)
db.session.add(comment)
db.session.commit() # problem here
movie.comment_num = movie.comment_num + 1
flash("Success", "ok")
return redirect(url_for("home.play", id=movie.id))
movie.play_num = movie.play_num + 1
try:
db.session.commit() # and problem here
except:
db.session.rollback()
return render_template("home/play.html", movie=movie, form=form)
см. play_num
был изменен на 1 с 0, это первый раз, когда я перезагружаю страницу, но во второй раз, страница не может быть открыта,и консоль не может собрать какие-либо данные. Произошла ошибка:
Транзакция этого сеанса была отменена из-за предыдущего исключения во время сброса.Чтобы начать новую транзакцию с этим сеансом, сначала выполните Session.rollback ().Первоначальное исключение: (возникло в результате вызванного запросом автозапуска; рассмотрите возможность использования блока session.no_autoflush, если этот сброс происходит преждевременно) (pymysql.err.InternalError)
Как это исправить