You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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方法:

  1. 修改后端路由:
@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('/')
  1. 前端改成表单提交:
<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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:10:31