Python 使用SQLAlchemy从数据库中删除帖子时出现错误:“0”;对象'';已附加到会话“中”;

Python 使用SQLAlchemy从数据库中删除帖子时出现错误:“0”;对象'';已附加到会话“中”;,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我正试图使用posts ID从数据库中删除posts,但我一直遇到以下错误 sqlalchemy.exc.InvalidRequestError:对象“”已附加到会话“34”(这是“35”) 我尝试做的应该很简单,但我还没有使用SQLAlchemy来确定这意味着什么以及如何修复它 我有一个删除帖子的路径,如下所示: @app.route('/delete_post') def delete_post(): post_id = request.args.get('post_id')

我正试图使用posts ID从数据库中删除posts,但我一直遇到以下错误

sqlalchemy.exc.InvalidRequestError:对象“”已附加到会话“34”(这是“35”)

我尝试做的应该很简单,但我还没有使用SQLAlchemy来确定这意味着什么以及如何修复它

我有一个删除帖子的路径,如下所示:

@app.route('/delete_post')
def delete_post():

    post_id = request.args.get('post_id')

    deleted_post = posts.query.filter_by(id=post_id).first()
    db.session.delete(deleted_post)
    db.session.commit()

    flash('Post deleted!', 'success')
    return redirect(url_for('admin_posts'))
该路由所要做的就是从上一页传递的URL中获取post_id变量,查询数据库以查找id为post_id的所有帖子,并删除匹配的帖子。我只是不断得到我上面贴出的错误

我认为问题不在于代码,它应该按照我的理解工作。我认为问题出在SQLAlchemy db.sessions上,我不知何故误用了它


我还应该注意到,我已经在应用程序的其余部分多次使用SQLAlchemy来创建帖子、回复和帐户,它们都能正常工作。问题就在于此。

我相信您无意中创建了两个会话,并将相同的对象粘贴到两个会话中

这条线在这里

posts.query.filter_by(id=post_id).first()
最有可能使用一个会话(很难说没有这个模型代码)

然后

可能正在使用不同的会话

解决方案是对两个操作使用相同的会话


尝试从它所在的模块导入
posts
模型使用的会话。

所以我让它工作了,问题是我的导入

我不确定为什么会出现这种情况,或者更重要的是,我没有正确地从my routes.py中的init.py导入

我有:

from app import app
但需要:

from app import app, db

显然是个愚蠢的错误,但我认为一切都正常,因为我的所有其他SQLAlchemy功能都正常工作,比如插入和查询。。。很奇怪

是的,看起来这可能是错误的原因。但是“解决方案是对两个操作使用相同的会话”,我如何才能做到这一点?我还应该注意,我已经在应用程序中实现了很多SQLAlchemy功能。例如发帖、回复、登录/注册系统。
from app import app, db