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

Overview
Eval results
Files

core-extension.mddocs/

Core Extension

The Migrate class is the main Flask extension that integrates database migration functionality into Flask applications. It provides the foundation for all migration operations and configuration management.

Capabilities

Migrate Class

Main migration manager class that integrates with Flask applications to provide database migration functionality.

class Migrate:
    def __init__(self, app=None, db=None, directory='migrations', command='db',
                 compare_type=True, render_as_batch=True, **kwargs):
        """
        Initialize migration manager.

        Parameters:
        - app: Flask application instance (optional for deferred initialization)
        - db: SQLAlchemy database instance (optional for deferred initialization)
        - directory: Migration directory path (default: 'migrations')
        - command: CLI command name (default: 'db')
        - compare_type: Enable type comparison in migrations (default: True)
        - render_as_batch: Render operations in batch mode (default: True)
        - **kwargs: Additional alembic context arguments
        """

Application Integration

Initialize the extension with a Flask application, registering the CLI commands and setting up the migration environment.

def init_app(self, app, db=None, directory=None, command=None,
             compare_type=None, render_as_batch=None, **kwargs):
    """
    Initialize extension with Flask app.

    Parameters:
    - app: Flask application instance
    - db: SQLAlchemy database instance (optional, uses constructor value if None)
    - directory: Migration directory path (optional, uses constructor value if None)
    - command: CLI command name (optional, uses constructor value if None)
    - compare_type: Enable type comparison (optional, uses constructor value if None)
    - render_as_batch: Render operations in batch mode (optional, uses constructor value if None)
    - **kwargs: Additional alembic context arguments
    """

Configuration Management

Register callback functions that will be called to configure the Alembic environment before running migration operations.

def configure(self, f):
    """
    Decorator to register configuration callback functions.

    Parameters:
    - f: Callback function that takes and returns an Alembic Config object

    Returns:
    The decorated function (for use as decorator)
    """

def call_configure_callbacks(self, config):
    """
    Execute all registered configuration callbacks.

    Parameters:
    - config: Alembic Config object

    Returns:
    Modified Config object after all callbacks
    """

Configuration Retrieval

Get an Alembic configuration object with Flask-Migrate specific settings and options applied.

def get_config(self, directory=None, x_arg=None, opts=None):
    """
    Get Alembic configuration object.

    Parameters:
    - directory: Migration directory path (optional, uses instance directory if None)
    - x_arg: Additional arguments for env.py scripts (list or single value)
    - opts: Options to set on config.cmd_opts (list of option names)

    Returns:
    Configured Alembic Config object
    """

Usage Examples

Basic Initialization

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)

Deferred Initialization

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

db = SQLAlchemy()
migrate = Migrate()

def create_app():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
    
    db.init_app(app)
    migrate.init_app(app, db)
    
    return app

Custom Configuration

from flask_migrate import Migrate

migrate = Migrate(
    directory='custom_migrations',
    command='database',
    compare_type=False,
    render_as_batch=False
)

Configuration Callbacks

from flask_migrate import Migrate

migrate = Migrate(app, db)

@migrate.configure
def configure_alembic(config):
    # Custom Alembic configuration
    config.set_main_option('sqlalchemy.url', 'postgresql://user:pass@localhost/db')
    return config

Install with Tessl CLI

npx tessl i tessl/pypi-flask-migrate

docs

cli-interface.md

core-extension.md

index.md

information-commands.md

migration-operations.md

revision-management.md

tile.json