我试图做一个函数来删除我的数据库中带有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)
问题内容: 我在MySql数据库中有表。这个表有,而且领域。 如何删除某些记录? 现在,我使用以下代码: 但是我不想在删除操作之前进行任何查询。有什么办法吗?我知道,我可以使用,但是我想使用方法。 问题答案: 你可以这样做, 要么 确保作出的生效。
问题内容: 如何使用Flask-SQLAlchemy删除单个表中的所有行? 寻找这样的事情: 问题答案: 尝试: 从文档:
问题内容: 我必须缺少SQLAlchemy的层叠选项的琐碎内容,因为我无法获得简单的层叠删除来正确操作-如果删除了父元素,则子对象将使用外键保留。 我在这里放了一个简洁的测试用例: 输出: 父母与子女之间存在简单的一对多关系。该脚本创建一个父级,添加3个子级,然后提交。接下来,它删除父级,但子级仍然存在。为什么?如何使孩子级联删除? 问题答案: 问题是sqlalchemy认为是父级的,因为这是您定
问题内容: 我是flask和sqlalchemy的新手,我只是开始在flask应用程序上工作,现在我正在使用sqlalchemy。我想知道使用flask-sqlalchemy与sqlalchemy是否可以获得任何显着的好处。 问题答案: 主要功能是与Flask应用程序正确集成-它创建并配置引擎,连接和会话,并将其配置为与Flask应用程序一起使用。 此设置非常复杂,因为我们需要创建作用域会话并根据
在Flask Web应用程序中使用原始SQL对数据库执行CRUD操作可能很乏味。 相反,Python工具包SQLAlchemy是一个功能强大的OR映射器,为应用程序开发人员提供了SQL的全部功能和灵活性。 Flask-SQLAlchemy是Flask扩展,它将对SQLAlchemy的支持添加到Flask应用程序中。 什么是ORM(对象关系映射)? 大多数编程语言平台是面向对象的。 另一方面,RDB
Flask-SQLAlchemy Flask-SQLAlchemy is an extension for Flask that adds support forSQLAlchemy to your application. It aims to simplify using SQLAlchemywith Flask by providing useful defaults and extra h