I'm trying to make a function to delete a record in my database with flask and the extension for SQLAlchemy. Problem is, instead of deleting just one row, it deletes all of them. Can someone tell me what's wrong with my code?
@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)
Thanks in advance!
I suspect that this line does not what you think.
You're getting a single instance (which you already did before), and by using
query you actually issue a new query over all objects without filtering and therefore deleting all of them.
Probably what you want to do is this: