выберите несколько полей в eagerload - PullRequest
2 голосов
/ 20 января 2011

У меня есть две таблицы:

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 голосов
/ 25 января 2011

Подобно тому, как вы используете параметр eagerload() для отношений, есть опция defer() для свойств столбцов, чтобы отключить их загрузку до тех пор, пока они не будут доступны:

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