在急切加载中选择一些字段

时间:2011-01-20 00:45:03

标签: join sqlalchemy pylons

我有两张桌子:

class Auto(Base):

    __tablename__ = "auto"

    id = Column(Integer, primary_key=True)
    added = Column(DateTime())

class Url(Base):

    __tablename__ = "url"

    id = Column(Integer, primary_key=True)
    added = Column(DateTime())
    auto_id = Column(Integer, ForeignKey('auto.id'))
    url = Column(Unicode(500))
    content = Column(UnicodeText())

    auto = relation('Auto', backref=backref('url', order_by=id))

我用

选择数据
Session.query(Auto).options(eagerload('url')).limit(20)

在select语句中,我得到了相对于Auto和Url表的所有字段,但我想只选择一些结果(Auto.id,Auto.added,Url.id,Url.added)。 问题是Url.content存储大量数据。

1 个答案:

答案 0 :(得分:0)

就像您使用选项eagerload()进行关系一样,列属性有一个选项defer()可以禁用加载它们,直到它们被访问:

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