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

SQLAlchemy对接MariaDB无法获取全量行,调用query.all报属性错误

错误原因

  • 原生SQLAlchemy中session.query是可调用方法,你需要先将待查询的模型类作为参数传入query(),才能链式调用all()方法获取全量数据,你的写法直接调用query.all()把query当成了属性对象,才会触发属性不存在报错
  • 你之前尝试的Employee.query.all()是Flask-SQLAlchemy扩展提供的语法糖,纯原生SQLAlchemy环境下模型类默认没有绑定query属性,所以也会触发属性报错
  • 额外注意:你当前初始化的EmployeeSchema默认是单对象序列化模式,查询全量返回的是实例列表,直接序列化会导致输出不符合预期

解决步骤

1. 修正查询语法

将路由中错误的查询行替换为以下代码:

all_employee = session.query(Employee).all()

2. 修正序列化逻辑

两种方案二选一即可:

  • 调整Schema初始化参数:把employee_schema = EmployeeSchema()修改为employee_schema = EmployeeSchema(many=True)
  • 调用dump时指定多对象参数:把result = employee_schema.dump(all_employee)修改为result = employee_schema.dump(all_employee, many=True)

修正后的完整路由代码参考

@app.route('/', methods=['GET'])
def get_employee():
    all_employee = session.query(Employee).all()
    app.logger.info(f"employees is {str(all_employee)}")
    result = employee_schema.dump(all_employee, many=True)
    return jsonify(result)

内容的提问来源于stack exchange,提问作者Texia Plazaola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:18:02