db.session.commit()
时间: 2023-04-24 13:02:27 浏览: 303
db.session.commit()是SQLAlchemy中的一个方法,用于提交当前会话中的所有更改到数据库中。这个方法会将所有的增、删、改操作都提交到数据库中,如果没有调用这个方法,那么所有的更改都不会被保存到数据库中。
相关问题
db.session.add(get_question) db.session,commit()
代码段`db.session.add(get_question)`和`db.session.commit()`用于在数据库中添加新的数据并提交更改。
`db.session.add(get_question)`将一个新的问题对象(假设为`get_question`)添加到数据库会话中,但此时并没有实际将数据写入数据库。
`db.session.commit()`则是将在会话中所做的所有更改(包括添加、更新或删除)提交到数据库,以确保数据的持久化。调用该方法后,新的问题数据将被保存到数据库中。
需要注意的是,这段代码前提是在使用某个Python的ORM工具(如SQLAlchemy)进行数据库操作,并且已正确配置和初始化了数据库连接。
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',修改报错
在你的代码中,`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()
```