Flask-SQLAlchemy API问题:传入员工ID返回空列表
问题分析与修复
你的代码返回空列表主要有两个核心问题:
- 参数传递错误:
filter_by(employee_id="employee_id")里的"employee_id"是字符串字面量,不是路由传入的实际参数,数据库会去匹配员工ID等于字符串"employee_id"的记录,自然查不到数据,应该直接使用变量employee_id。 - 循环变量名不一致:循环里定义的变量是
rating,但构建响应字典时误用了rate,这会导致逻辑错误(若没触发报错,大概率是存在全局变量干扰,但写法本身不规范),需统一变量名。
修正后的代码:
@app.route('/getrate/<int:employee_id>', methods=['GET']) def getrate(employee_id): # 修正:使用路由传入的实际参数查询 ratings = employee_ratings.filter_by(employee_id=employee_id).all() allRatings = [] # 修正:循环变量与字典内引用统一为rating for rating in ratings: newResponse = { "id": rating.id, "employee_id": rating.employee_id, "name": rating.name, "department": str(rating.department), "phone": rating.phone, "title": str(rating.title), "score": rating.score, "rank": str(rating.rank) } allRatings.append(newResponse) return {"all": allRatings}
额外优化建议:
- 该接口是查询数据,建议只保留
GET方法,更符合REST接口设计规范。 - 若需要更标准的JSON响应格式,可以导入
from flask import jsonify,然后返回return jsonify({"all": allRatings})。
内容的提问来源于stack exchange,提问作者sami
相关产品推荐
相关产品推荐

