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

使用Python+Postman删除MySQL记录时/delete接口POST请求报错

问题分析与解决方案

你的代码存在两个关键问题,导致了500内部服务器错误:

1. SQL执行参数格式错误

MySQL驱动(如MySQLdb)的cursor.execute()方法要求参数必须是元组或列表类型,你直接传入单个字符串first_name,会触发数据库编程错误(ProgrammingError)。

2. Flask视图返回非法类型

Flask视图函数必须返回合法响应类型(字符串、字典、Response实例等),你的异常处理块直接返回了Exception对象e,Flask无法将其转换为合法响应,这是触发500错误的直接原因。


修正后的完整代码

from flask import Flask, request, jsonify

@app.route("/delete", methods=['POST'])
def delete_record():
    # 确保数据库连接和游标正确释放
    try:
        mydb = con.connect(host="localhost", user="root", password="password", database="mysql_python")
        with mydb.cursor() as cursor:
            # 使用get避免前端未传参时触发KeyError
            first_name = request.json.get('firstname')  
            if not first_name:
                return jsonify({"error": "缺少firstname参数"}), 400
                
            query = "DELETE FROM user_accounts WHERE First_Name = %s"
            # 将参数包装成元组(注意逗号不能少)
            cursor.execute(query, (first_name,))
            mydb.commit()
        return jsonify({"status": "success"}), 200
    except Exception as e:
        # 返回异常信息的字符串形式,同时返回500状态码
        return jsonify({"error": str(e)}), 500
    finally:
        # 确保连接始终关闭,防止连接泄漏
        if 'mydb' in locals() and mydb.is_connected():
            mydb.close()

额外注意事项

  • Postman请求时,需确认请求头Content-Type设置为application/json,否则request.json会为空。
  • 使用request.json.get()替代直接索引,能避免前端未传参时触发额外错误。
  • 用jsonify返回JSON格式响应,更符合REST API规范。

内容的提问来源于stack exchange,提问作者Abhishek Kashyap

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:18:30