我有两张桌子:
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存储大量数据。
答案 0 :(得分:0)
就像您使用选项eagerload()
进行关系一样,列属性有一个选项defer()
可以禁用加载它们,直到它们被访问:
session.query(Auto).options(joinedload('url'), defer('url.content')).limit(20)