Flask+MySQLdb单页CRUD:删除功能无法捕获ID问题求助
解决Flask CRUD删除功能无法捕获ID的问题
问题1:前端未正确传递记录ID
你的index.html中删除链接使用了未定义的{{id}}变量,循环中每条记录的ID存储在row[0]里,需要修正链接:
原代码:
<td><a href="/delete/{{id}}">Delete</a></td>
修改为(直接拼接ID):
<td><a href="/delete/{{row[0]}}">Delete</a></td>
或者用url_for更规范(推荐):
<td><a href="{{ url_for('delete', id=row[0]) }}">Delete</a></td>
问题2:后端SQL执行参数格式错误
delete函数中,SQL执行的参数(id)不是元组格式,MySQLdb要求参数必须是元组或列表,需改为(id,):
原代码:
cur.execute("DELETE FROM people WHERE id=%s", (id))
修改为:
cur.execute("DELETE FROM people WHERE id=%s", (id,))
同时建议添加游标关闭操作,避免资源泄漏:
cur.close()
额外优化:规范请求方法(可选)
删除操作使用GET请求存在误触风险,建议改用POST方法:
- 修改后端路由:
@app.route('/delete/<int:id>', methods=['POST']) def delete(id): cur = mysql.connection.cursor() cur.execute("DELETE FROM people WHERE id=%s", (id,)) mysql.connection.commit() cur.close() return redirect('/')
- 前端改成表单提交:
<td> <form action="{{ url_for('delete', id=row[0]) }}" method="POST"> <button type="submit" class="btn btn-danger">Delete</button> </form> </td>
内容的提问来源于stack exchange,提问作者nalyr
相关产品推荐
相关产品推荐

