CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-flask-migrate

SQLAlchemy database migrations for Flask applications using Alembic.

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

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.

docs

cli-interface.md

core-extension.md

index.md

information-commands.md

migration-operations.md

revision-management.md

tile.json