app.route('/deleteaccount/<int:account_id>', methods=['POST']) @login_required def delete_account(account_id) : authed = session.get('authed') if not authed : return redirect(url_for('login')) form1 = DeleteAccountForm() account = User.query.get_or_404(account_id) if form1.submit.data and form1.validate() : if current_user.id != account.id : abort(401) flash('Usurpation') logout_user() db.session.delete(account) db.session.commit() session.pop('authed') flash('Disposed') else : abort(400) return redirect(url_for('login')) @db.event.listens_for(User, 'after_delete', named=True) def edit_account(**kwargs) : target = kwargs['target'] for username in [target.username] : if username is not None : dis = Photo.query.filter_by(user_name=username).delete() db.session.begin(subtransactions=True) db.session.commit() ,报错信息:TypeError: scoped_session.begin() got an unexpected keyword argument 'subtransactions',修改报错
时间: 2023-11-22 08:56:21 浏览: 38
在你的代码中,`scoped_session` 不支持 `subtransactions` 参数。你可以使用 `session.begin_nested()` 代替 `scoped_session.begin(subtransactions=True)`,以实现嵌套事务。
以下是修改后的代码:
```
@app.route('/deleteaccount/<int:account_id>', methods=['POST'])
@login_required
def delete_account(account_id):
authed = session.get('authed')
if not authed:
return redirect(url_for('login'))
form1 = DeleteAccountForm()
account = User.query.get_or_404(account_id)
if form1.submit.data and form1.validate():
if current_user.id != account.id:
abort(401)
flash('Usurpation')
logout_user()
db.session.delete(account)
db.session.commit()
session.pop('authed')
flash('Disposed')
else:
abort(400)
return redirect(url_for('login'))
@db.event.listens_for(User, 'after_delete', named=True)
def edit_account(**kwargs):
target = kwargs['target']
for username in [target.username]:
if username is not None:
dis = Photo.query.filter_by(user_name=username).delete()
nested = db.session.begin_nested()
nested.commit()
```