Join 在加载中选择一些字段

Join 在加载中选择一些字段,join,sqlalchemy,pylons,Join,Sqlalchemy,Pylons,我有两张桌子: class Auto(Base): __tablename__ = "auto" id = Column(Integer, primary_key=True) added = Column(DateTime()) 自动类(基本类): __tablename_=“自动” id=列(整数,主键=True) 添加=列(DateTime()) 及 类Url(基): __tablename_=“url” id=列(整数,主键=True) 添加=列(DateTim

我有两张桌子:

class Auto(Base): __tablename__ = "auto" id = Column(Integer, primary_key=True) added = Column(DateTime()) 自动类(基本类): __tablename_=“自动” id=列(整数,主键=True) 添加=列(DateTime()) 及

类Url(基): __tablename_=“url” id=列(整数,主键=True) 添加=列(DateTime()) auto_id=列(整数,ForeignKey('auto.id')) url=列(Unicode(500)) 内容=列(Unicodext()) auto=关系('auto',backref=backref('url',order\u by=id)) 我使用

Session.query(Auto).options(eagerload('url')).limit(20) Session.query(自动)。选项(加载('url'))。限制(20) 在select语句中,我得到了与Auto和Url表相关的所有字段,但我只想选择一些结果(Auto.id、Auto.added、Url.id、Url.added)。
问题是Url.content中的内容存储了大量数据。

就像您正在使用选项
急切加载()
处理关系一样,列属性有一个选项
延迟()
,用于在访问之前禁用加载它们:

session.query(Auto).options(joinedload('url'), defer('url.content')).limit(20)

就像您对关系使用选项
eangerload()
一样,列属性也有一个选项
defer()
,用于在访问它们之前禁用加载它们:

session.query(Auto).options(joinedload('url'), defer('url.content')).limit(20)