Python Sqlalchemy:数据库删除错误

Python Sqlalchemy:数据库删除错误,python,sqlalchemy,Python,Sqlalchemy,对于以下函数 def deleteMenuItem(restaurant_id,menu_id): if request.method == 'POST': item = session.query(MenuItem).filter_by(id = menu_id) session.delete(item) session.commit() return redirect(url_for('showMenu',restaur

对于以下函数

def deleteMenuItem(restaurant_id,menu_id):
    if request.method == 'POST':
        item = session.query(MenuItem).filter_by(id = menu_id)
        session.delete(item)
        session.commit()
        return redirect(url_for('showMenu',restaurant_id =restaurant_id))
    else:
        return render_template('deletemenu.html',restaurant_id=restaurant_id,menu_id=menu_id)
当我尝试删除一个项目时。我得到以下错误

sqlalchemy.orm.exc.UnappedInstanceError UnappedInstanceError:类 “sqlalchemy.orm.query.query”未映射

如果我对代码进行以下更改,则可以修复此错误

item = session.query(MenuItem).filter_by(id = menu_id).one()
我不知道为什么.one()可以解决这个问题。因为查询本身总是会找到一个结果。那么为什么需要.one()。

session.query(MenuItem).filter\u by(id=menu\u id)返回一个
query
对象,可用于过滤或排序结果,而不是结果本身

one()
返回查询找到的第一个对象

当您尝试删除查询时,它会抱怨
查询
对象未映射


文档是。
Query
对象还有一个
delete
方法,该方法将删除所有匹配的对象。

.one()
返回找到的对象
…filter\u by(…)
返回一个查询对象。@Holloway这是答案。