用Flask-SQLAlchemy删除行

我试图做一个函数来删除我的数据库中带有flask和SQLAlchemy扩展名的记录。问题是,它不仅删除了所有行,而且还删除了所有行。有人可以告诉我我的代码有什么问题吗?

@app.route('/admin/delete/<int:page_id>', methods=['GET','POST'])

@requires_auth

def delete_page(page_id):

page = Page.query.get(page_id)

if not page:

abort(404)

if page.children:

flash('You can not delete a page with child pages. Delete them, or assign them a different parent.',

'error')

return redirect(url_for('admin_page'))

if request.method == 'POST':

Page.query.get(page_id).query.delete()

db.session.commit()

flash('Page was deleted successfully', 'success')

return redirect(url_for('admin_page'))

return render_template('admin_delete.html', page_title=page.title, page_id=page_id)

提前致谢!

回答:

我怀疑这条线与你的想法不符。

    Page.query.get(page_id).query.delete()

你将获得一个实例(你之前已经做过),并且通过使用query它实际上对所有对象发出了一个新查询,而不进行过滤,因此删除了所有对象。

你可能想做的是:

    db.session.delete(page)

以上是 用Flask-SQLAlchemy删除行 的全部内容, 来源链接: utcz.com/qa/429431.html

回到顶部