SQLAlchemy ORM在Model.query中加载特定列

2024-06-11 21:55:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python/sqlachemy领域的新手。我正在尝试使用flask中的sqlachemy从PostgreSQL中获取数据,在这里我只需要获取选定的列,而不是通过网络从数据库中流式传输所有列。其中一种方法是使用工作正常的会话(如下所示)

session.query(User.user_id, User.name).all()

但出于某种原因,我希望坚持使用Model.query方法,而不是使用会话。所以我最后用了下面的方法

User.query.options(load_only(User.user_id, User.name)).all()

上面的代码片段不会过滤所选列,而是返回所有列。看起来sqlachemy不尊重load_only参数。为什么在Model.query中使用这种行为和任何解决方案来实现我的用例而不是使用会话

我的用户模型如下所示

class User(db.Model):
    __tablename__ = 'user_info'

    user_id = Column(String(250), primary_key=True)
    name = Column(String(250))
    email = Column(String(250))
    address = Column(String(512))

版本信息

  • Python-3.7
  • sqlachemy-1.3.11

编辑1:虽然我添加了仅加载属性,但它正在生成以下查询

SELECT user.user_id AS user_user_id, user.name AS user_name, user.email AS user_email, user.address AS user_address FROM user_info

Tags: 方法nameidstringmodeladdressemailas