or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-interface.mdcore-extension.mdindex.mdinformation-commands.mdmigration-operations.mdrevision-management.md
tile.json

tessl/pypi-flask-migrate

SQLAlchemy database migrations for Flask applications using Alembic.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/flask-migrate@4.1.x

To install, run

npx @tessl/cli install tessl/pypi-flask-migrate@4.1.0

index.mddocs/

Flask-Migrate

Flask-Migrate is a Flask extension that handles SQLAlchemy database migrations for Flask applications using Alembic. It provides both a programmatic API and command-line interface for managing database schema changes, creating migration scripts, and applying upgrades/downgrades.

Package Information

  • Package Name: Flask-Migrate
  • Language: Python
  • Installation: pip install Flask-Migrate

Core Imports

from flask_migrate import Migrate

For individual migration functions:

from flask_migrate import init, revision, migrate, upgrade, downgrade

Basic Usage

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'

db = SQLAlchemy(app)
migrate = Migrate(app, db)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128))

# Initialize migration repository
# flask db init

# Generate migration
# flask db migrate -m "Add user table"

# Apply migration
# flask db upgrade

Architecture

Flask-Migrate provides a Flask extension pattern with both programmatic and CLI interfaces:

  • Migrate class: Main extension that integrates with Flask apps and provides configuration
  • Migration functions: Programmatic API functions for all migration operations
  • CLI interface: Flask CLI commands accessible via flask db for command-line usage
  • Templates: Pre-configured migration environments for different Flask setups
  • Configuration system: Callback-based configuration with Alembic integration

Capabilities

Core Extension

The main Flask-Migrate extension class that integrates database migration functionality into Flask applications.

class Migrate:
    def __init__(self, app=None, db=None, directory='migrations', command='db',
                 compare_type=True, render_as_batch=True, **kwargs): ...
    def init_app(self, app, db=None, directory=None, command=None,
                 compare_type=None, render_as_batch=None, **kwargs): ...
    def configure(self, f): ...
    def get_config(self, directory=None, x_arg=None, opts=None): ...

Core Extension

Migration Operations

Essential migration commands for creating, applying, and managing database schema changes.

def init(directory=None, multidb=False, template=None, package=False): ...
def revision(directory=None, message=None, autogenerate=False, sql=False,
             head='head', splice=False, branch_label=None, version_path=None,
             rev_id=None): ...
def migrate(directory=None, message=None, sql=False, head='head', splice=False,
            branch_label=None, version_path=None, rev_id=None, x_arg=None): ...
def upgrade(directory=None, revision='head', sql=False, tag=None, x_arg=None): ...
def downgrade(directory=None, revision='-1', sql=False, tag=None, x_arg=None): ...

Migration Operations

Revision Management

Functions for managing migration revisions, including editing, merging, and stamping operations.

def edit(directory=None, revision='current'): ...
def merge(directory=None, revisions='', message=None, branch_label=None,
          rev_id=None): ...
def stamp(directory=None, revision='head', sql=False, tag=None, purge=False): ...

Revision Management

Information Commands

Functions for inspecting migration history, current state, and repository status.

def show(directory=None, revision='head'): ...
def history(directory=None, rev_range=None, verbose=False,
            indicate_current=False): ...
def heads(directory=None, verbose=False, resolve_dependencies=False): ...
def branches(directory=None, verbose=False): ...
def current(directory=None, verbose=False): ...
def check(directory=None): ...
def list_templates(): ...

Information Commands

CLI Interface

Flask CLI integration that provides command-line access to all migration functionality through the flask db command group.

@click.group()
def db(directory, x_arg): ...

CLI Interface

Configuration Classes

class Config(AlembicConfig):
    """Extended Alembic configuration with template directory support."""
    def __init__(self, *args, template_directory=None, **kwargs): ...
    def get_template_directory(self): ...

class _MigrateConfig:
    """Configuration wrapper for backwards compatibility."""
    def __init__(self, migrate, db, **kwargs): ...
    @property
    def metadata(self): ...

Utility Functions

def catch_errors(f):
    """Decorator that catches CommandError and RuntimeError exceptions."""

Available Templates

  • flask: Single-database configuration for Flask applications
  • flask-multidb: Multi-database configuration for Flask applications
  • aioflask: Single-database configuration for async Flask applications
  • aioflask-multidb: Multi-database configuration for async Flask applications

Error Handling

Flask-Migrate functions raise CommandError or RuntimeError for migration failures. The catch_errors decorator is used internally to handle these exceptions gracefully in CLI usage.