📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials Flask Web Framework Flask SQLAlchemy

Flask SQLAlchemy

6 min read Quiz at the end
Define SQLAlchemy models, perform CRUD, define relationships, and paginate in Flask-SQLAlchemy.

Flask-SQLAlchemy

pip install flask-sqlalchemy flask-migrate

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

# Model
class User(db.Model):
    __tablename__ = "users"
    id         = db.Column(db.Integer, primary_key=True)
    name       = db.Column(db.String(100), nullable=False)
    email      = db.Column(db.String(255), unique=True, nullable=False)
    created_at = db.Column(db.DateTime, default=db.func.now())
    posts      = db.relationship("Post", backref="user", lazy=True)

    def __repr__(self):
        return "<User " + self.email + ">"

# CRUD
user = User(name="Alice", email="a@b.com")
db.session.add(user)
db.session.commit()

user = User.query.get(1)                          # deprecated
user = db.session.get(User, 1)                    # SQLAlchemy 2.x
users = User.query.filter_by(name="Alice").all()
users = User.query.order_by(User.created_at.desc()).paginate(page=1, per_page=10)
Topic Quiz · 2 questions

Test your understanding before moving on

1. Which class does Flask-SQLAlchemy use for models?
💡 Flask-SQLAlchemy models extend db.Model where db = SQLAlchemy().
2. How do you commit a new record?
💡 Add the object to the session then commit.