python - sqlalchemy的报错: is already attached to session '1' (this is '2')
高洛峰
高洛峰 2017-04-17 15:15:28
0
3
412

新手学习时,遇到一个问题,GG查了下,看得不是很明白,因此这里请教一下。

要实现的:用户列表有一个「禁言」操作,点击后更新该用户的禁言字段的布尔值。

「禁言」操作是通过视图函数实现的:

@app.route('/member/status-false/<int:user_id>')
@login_required
def status_false(user_id):
    from models import Member
    user = Member.query.filter_by(id=user_id).first()
    user.status = '0'  #禁用用户
    db.session.add(user)
    db.session.commit()
    return redirect(url_for('member'))

运行后,点击「禁言」Flask报错:

sqlalchemy.exc.InvalidRequestError: Object '' is already attached to session '1' (this is '2')

报错的问题大致理解是会话绑定对象乱掉了,但是不知道怎么修改上面的代码使得目的可以实现。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(3)
迷茫

昨夜も引き続きいくつかの情報を確認しましたが、解決策は次のとおりです:

db.session の操作が view 関数に含まれたら、関数内で from models import db

を実行します。

それは正常です。

いいねを押す +0
洪涛

1. db.session.add(user) を削除して試してください
2. ファイルの先頭にインポートの導入部分を配置します

いいねを押す +0
黄舟

結論:

リーリー

理由:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!