Flask 使用sqlalchemy无法提交到数据库

Flask 使用sqlalchemy无法提交到数据库,flask,sqlalchemy,Flask,Sqlalchemy,我正在制作一个视频页面,可以跟踪播放时间和评论时间,每次我重新加载页面,使用{{movie.play_num}显示播放时间,它总是工作,但不会更改数据库,所以我不知道它怎么可能是正确的?似乎session.commit不起作用。 此外,如果我在评论栏中输入一些文字并提交,等待回复。。。显示,并且看起来服务器一直在等待,直到超时 这是我的密码: def play(id=None): movie = Movie.query.join(Tag).filter( Tag.id =

我正在制作一个视频页面,可以跟踪播放时间和评论时间,每次我重新加载页面,使用{{movie.play_num}显示播放时间,它总是工作,但不会更改数据库,所以我不知道它怎么可能是正确的?似乎session.commit不起作用。 此外,如果我在评论栏中输入一些文字并提交,等待回复。。。显示,并且看起来服务器一直在等待,直到超时

这是我的密码:

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已从0更改为1,这是我第一次重新加载页面,但第二次无法打开页面,并且控制台无法收集任何数据。发生错误:

由于刷新期间的前一个异常,此会话的事务已回滚。若要从此会话开始新事务,请首先发出Session.rollback。原始异常为:由于调用了自动刷新的查询而引发;如果这个刷新发生过早PYYYSQL .Er.InnalError

,请考虑使用SeStudi.NoAutoFLUH块。
如何修复此问题

您尝试捕获异常消息:

from sqlalchemy.exc import SQLAlchemyError
try:
    db.session.commit()
except SQLAlchemyError as e:
    print(str(e))
    db.session.rollback()

首先检查错误消息是什么

数据库连接设置是否正确?如果在python控制台中插入注释会有什么结果?连接正确,插入一行就可以了如何在提交后放置一个断点来验证它是否真的存在提交问题当您在查询中执行连接时,您真的可以像这样更新数据吗?它没有经过异常方式,它确实选择提交,但数据库中的数据从未更改