Performance: Relationships (one-to-many)
This affects how data is loaded and rendered on the page, impacting load speed and responsiveness when displaying related records.
from sqlalchemy.orm import joinedload parents = Parent.query.options(joinedload(Parent.children)).all() for parent in parents: children = parent.children # Loads parents and children in a single query
parents = Parent.query.all() for parent in parents: children = [child for child in parent.children] # This triggers a separate database query for each parent due to lazy loading
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Lazy loading (N+1 queries) | Minimal DOM nodes initially | Multiple reflows if data loads incrementally | Higher paint cost due to delayed content | [X] Bad |
| Eager loading (single query) | All DOM nodes ready at once | Single reflow after full data load | Lower paint cost with faster content display | [OK] Good |
author.books return?class Author(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
books = db.relationship('Book', backref='author')
class Book(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
author_id = db.Column(db.Integer, db.ForeignKey('author.id'))
# Assume author is an Author instance with 3 related Book recordsclass Parent(db.Model):
id = db.Column(db.Integer, primary_key=True)
children = db.relationship('Child')
class Child(db.Model):
id = db.Column(db.Integer, primary_key=True)
parent_id = db.Column(db.Integer)Pass the test and this pattern moves unknown