Skip to content

Database with SQLAlchemy

Use SQLAlchemy for ORM mapping and database access, recommended to use with Flask-Migrate for migration management.

Installation:

bash
pip install flask-sqlalchemy flask-migrate

Initialize Extensions:

python
# app/extensions.py
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

db = SQLAlchemy()
migrate = Migrate()

Application Factory Registration:

python
# app/__init__.py
from .extensions import db, migrate

def create_app(config_object=None):
    app = Flask(__name__)
    app.config.from_mapping(SQLALCHEMY_DATABASE_URI="sqlite:///app.db",
                            SQLALCHEMY_TRACK_MODIFICATIONS=False)
    db.init_app(app)
    migrate.init_app(app, db)
    return app

Define Models:

python
# app/models.py
from .extensions import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), unique=True, nullable=False)
    name = db.Column(db.String(80))
    created_at = db.Column(db.DateTime, server_default=db.func.now())

Basic Operations:

python
u = User(email="a@ex.com", name="Alice")
db.session.add(u)
db.session.commit()

Content is for learning and research only.