我在我的项目中使用flask_restful,我试图删除一个条目,但无法做到这一点。 以下是端点实现:
def delete_from_db(self, emp_no):
db.session.delete(emp_no)
db.session.commit()
class DeleteEmployee(Resource):
@marshal_with({
'message': fields.String
})
def delete(self, employee_id: int):
employee = db.get_or_404(
Employees, employee_id,
description='Employee Not Found'
)
employee.delete_from_db(emp_no=employee_id)
return {
'message': 'Employee Deleted successfully.'
}
如果我执行终点,,就像这样:
{{base_URL}}/employee/3
我收到以下回复:
File "/Users/tp/.pyenv/versions/3.7.13/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 3414, in delete
raise exc.UnmappedInstanceError(instance) from err
sqlalchemy.orm.exc.UnmappedInstanceError: Class 'builtins.int' is not mapped
如果注释
employee.delete_from_db(emp_no=employee_id)
行,它会正常工作,但它不会从数据库中删除记录。
可能是什么问题?
要删除数据,请将模型对象传递给 db.session.delete()。 .
@marshal_with({
'message': fields.String
})
def delete(self, employee_id: int):
employee = db.get_or_404(
Employees, employee_id,
description='Employee Not Found'
)
db.session.delete(employee)
db.session.commit()
return {
'message': 'Employee Deleted successfully.'
}
在您的情况下,使用实例方法,可以简单地传递
self
。
def delete_from_db(self):
db.session.delete(self)
db.session.commit()