小编Pan*_*tis的帖子

SQLAlchemy:禁用延迟加载并仅在 join() 上加载对象

我正在努力禁用 SQLAlchemy 上的延迟加载,因此在从数据库中获取记录时,默认情况下它不会加载所有对象。例如,当您专门将事件对象加入查询或访问它(例如event.user )时,我尝试仅从事件对象加载用户对象。这是否可以通过参数以某种方式实现,或者禁用延迟加载是一个不好的做法吗?

我已经尝试过 noload("*") 但它会禁用最后的任何连接。例如,我有以下模型以及我正在执行测试的查询。

# Event model
class Event(Base):
    __tablename__ = 'events'

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50), nullable=False)
    amount = Column(Integer)

    _user_id = Column("user_id", Integer, ForeignKey("users.id"), nullable=False)
    user = relationship(User)

# Query - This fetches also the whole user object <-- I don't want such behavior
some_session.query(Event).all()

# Query - I would like to load the user object when I will use the join() if possible
some_session.query(Event).join(Event.user).all()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python sqlalchemy

7
推荐指数
1
解决办法
9806
查看次数

标签 统计

python ×1

sqlalchemy ×1