【问题标题】:Get only single field data using flask session query使用烧瓶会话查询仅获取单个字段数据
【发布时间】:2021-11-09 20:40:51
【问题描述】:

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

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

【问题讨论】:

    标签: python flask flask-sqlalchemy


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢先生的回复。我正在以类似[(20,),(21,),] 的形式获得输出。先生,我没有得到这是什么形式。我不能以像[20,21] 这样的简单形式得到这个吗?
    • 原始表中年龄列的数据如何?
    • 先生只是 int 类型,比如 20 和 21
    • 其实我只是想遍历这些数据
    • @newbir 查看更新后的版本
    【解决方案2】:

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

    load_only:

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

    with_entities:

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

    【讨论】:

    • 其实我用的是sessions
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2018-08-18
    • 2017-06-11
    • 2019-03-14
    • 1970-01-01
    相关资源
    最近更新 更多