使用烧瓶会话查询仅获取单个字段数据

Get only single field data using flask session query

例如,我有一个名为 User 的数据库 table,它具有以下字段:idnameage。我只想获取age字段的数据。目前,我正在获取查询中所有字段的数据。如何获取一个字段的数据?

session.query(User)
        .filter_by(
            id=1
        )
        .all() 

在查询中提及您想要的列名称:

rows = session.query(User.age).filter_by(id=1).all() 

实际上,SqlAlchemy 查询属性 return KeyedTuples,其行为类似于命名元组。

这就是为什么您的数据看起来像那样,您可以通过索引或名称访问它们:

rows = [i[0] for i in rows]
#or 
rows = [i.age for i in rows]

rows

在此处阅读有关 KeyedTuple 的更多信息。

您可以使用以下两个语句将列减少到您的要求。

load_only:

User.query.options(load_only('age')).all()

with_entities:

User.query.with_entities(User.age).all()