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

如何查询继承自Flask AppBuilder Model类的数据库模型

Flask AppBuilder Model 类查询方案

Flask AppBuilder 的Model基类本质是对Flask-SQLAlchemy的Model做的轻量封装,本身兼容Flask-SQLAlchemy的核心查询语法,你之前的写法失效大概率是query.get()的传参规则用错了,以下是几种可用的等效查询方案:

  • 修正get()方法的标准用法
    get()方法接收的是主键的直接值,不需要指定关键字参数,如果你的模型主键为id字段,直接传入对应值即可:
record = MyModel.query.get("someid")

如果是复合主键,按主键定义顺序传入元组即可:

record = MyModel.query.get((key_val1, key_val2))
  • 使用filter_by()做通用精确匹配
    该写法不限制查询字段、兼容所有主键类型,和你原本的写法逻辑完全等效:
record = MyModel.query.filter_by(id="someid").first()
  • 直接调用DB Session执行查询
    如果上述写法仍有问题,可以直接调用FAB全局挂载的数据库会话对象执行查询:
from flask_appbuilder import db
record = db.session.query(MyModel).filter(MyModel.id == "someid").first()

如果上述方法都无法查询到预期结果,先排查模型主键定义是否正确、传入的查询值是否在数据库中真实存在,FAB的Model没有修改SQLAlchemy的核心查询逻辑,不会出现原生查询方法失效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:24:02