问题描述
我想知道以下函数以python的不同方式编写。 第一项功能是正常工作并取得成功。返回正确的数据,并成功从数据库中删除该记录。 在第二个中,返回正确的数据,但在数据库中不删除任何内容!!!应该删除的记录仍然存在。
注意:我使用FLASK sqlAchemy连接到postgress数据库。类名是(电影),表名是(电影)
# Creating endpoint to delete a movie by providing movie_id
@app.route('/movies/<int:movie_id>',methods = ['DELETE'])
def delete_movie(movie_id):
movie = Movie.query.filter(Movie.id == movie_id).one_or_none()
if movie is None:
abort(404) # abort if id is not found
else:
try:
movie.delete()
# return movie id that was deleted
return jsonify({
'success': True,'deleted': movie_id
})
except Exception:
abort(422)
第二个失败功能是:
@app.route('/movies/<int:movie_id>',methods = ['DELETE'])
def delete_movie(movie_id):
movie = Movie.query.filter(Movie.id == movie_id)
movie_availability = movie.one_or_none()
if movie_availability is None:
abort(404) # abort if id is not found
else:
try:
movie.delete()
# return movie id that was deleted
return jsonify({
'success': True,'deleted': movie_id
})
except Exception:
abort(422)
解决方法
您需要在第二个示例中删除movie_availability
,而不是movie
。
即
try:
movie_availability.delete()
在第二个示例中,movie_availability
成为从数据库中检索的记录,而在第一个示例中,它被压缩成一行并分配给movie
。