Альтернатива неэффективному @property в модели - PullRequest
0 голосов
/ 11 октября 2019

Я использую python @property с запросом, чтобы получить первую строку из связанной модели. Затем я получаю несколько строк из «родителя». Запрос, который находится в @property, затем вызывается один раз для каждой из родительских строк. Это приводит к снижению производительности.

Любая помощь приветствуется.

Я поиграл с column_property, но не нашел способа откатить весь дочерний ряд.

класс Родитель (модель):

id = db.Column(db.Integer, primary_key=True)
...
children = relationship('Child', lazy='dynamic', cascade='all, delete-orphan', passive_deletes=True)

@property
def latest_script_report(self):
    return db.session.query(Child) \
        .filter(child.parent_id == self.id) \
        .order_by(Child.updated_at.desc()) \
        .first()

класс ребенок (модель):

id = db.Column(db.Integer, primary_key=True)
updated_at = Column(DateTime,
                    default=datetime.utcnow,
                    server_default=text("CURRENT_TIMESTAMP"),
                    onupdate=datetime.utcnow,
                    nullable=False)
parent_id = ReferenceCol('parent', cascade=True, nullable=False, index=True)
parent = relationship('Parent',
                               foreign_keys='Child.parent_id')

... more child columns
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...