import os import argparse from flask import current_app from flask.ext.script import Manager from alembic import __version__ as __alembic_version__ from alembic.config import Config as AlembicConfig from alembic import command alembic_version = tuple([int(v) for v in __alembic_version__.split('.')[0:3]]) class _MigrateConfig(object): def __init__(self, migrate, db, **kwargs): self.migrate = migrate self.db = db self.directory = migrate.directory self.configure_args = kwargs @property def metadata(self): """ Backwards compatibility, in old releases app.extensions['migrate'] was set to db, and env.py accessed app.extensions['migrate'].metadata """ return self.db.metadata class Config(AlembicConfig): def get_template_directory(self): package_dir = os.path.abspath(os.path.dirname(__file__))
import os import argparse from flask import current_app from flask.ext.script import Manager from alembic import __version__ as __alembic_version__ from alembic.config import Config as AlembicConfig from alembic import command alembic_version = tuple([int(v) for v in __alembic_version__.split('.')[0:3]]) class _MigrateConfig(object): def __init__(self, migrate, db, **kwargs): self.migrate = migrate self.db = db self.directory = migrate.directory self.configure_args = kwargs @property def metadata(self): """ Backwards compatibility, in old releases app.extensions['migrate'] was set to db, and env.py accessed app.extensions['migrate'].metadata """ return self.db.metadata class Config(AlembicConfig): def get_template_directory(self): package_dir = os.path.abspath(os.path.dirname(__file__)) return os.path.join(package_dir, 'templates')
from ._utils import app_context_task log = logging.getLogger(__name__) # pylint: disable=invalid-name try: from alembic import __version__ as __alembic_version__ from alembic.config import Config as AlembicConfig from alembic import command except ImportError: log.warning( "Alembic can't be imported, some app.db.* tasks won't be available!" ) else: alembic_version = tuple( [int(v) for v in __alembic_version__.split(".")[0:3]] ) class Config(AlembicConfig): """ 自定义配置 """ def get_template_directory(self): package_dir = os.path.abspath(os.path.dirname(__file__)) return os.path.join(package_dir, "db_templates") def _get_config(directory, x_arg=None, opts=None): """ 预准备AlembicConfig实例
hide_url_pass, raise_if_not_responsive, ) from simcore_postgres_database.utils_cli import ( DISCOVERED_CACHE, get_alembic_config_from_cache, get_service_published_port, load_cache, reset_cache, ) from simcore_postgres_database.utils_migration import DEFAULT_INI from tenacity import Retrying from tenacity.after import after_log from tenacity.wait import wait_fixed ALEMBIC_VERSION = tuple(int(v) for v in __alembic_version__.split(".")[0:3]) DEFAULT_HOST = "postgres" DEFAULT_PORT = 5432 DEFAULT_DB = "simcoredb" log = logging.getLogger("root") if __name__ == "__main__": # swallows up all log messages from tests # only enable it during cli invocation fileConfig(DEFAULT_INI) @click.group() def main(): """Simplified CLI for database migration with alembic"""
"""Migrate commands using click.""" from alembic import __version__ as __alembic_version__ from .config import MigrateConfig alembic_version = tuple( [int(v) for v in __alembic_version__.split('.') if v.isnumeric()]) class Migrate(object): """Handle migration commands.""" def __init__(self, app=None, database=None, directory='migrations'): """Init object. :param app: Application. :param database: Database. :param directory: Migration directory. :return: """ self.app = app if app is not None and database is not None: self.init_app(app, database, directory) def init_app(self, app, database, directory='migrations'): # pylint: disable=no-self-use """Init app. :param app: Application. :param database: Database. :param directory: Migration directory. """
import alembic.command import click import docker from alembic import __version__ as __alembic_version__ from alembic.config import Config as AlembicConfig from simcore_postgres_database.models import * from simcore_postgres_database.utils import ( build_url, hide_dict_pass, hide_url_pass, raise_if_not_responsive, ) from tenacity import Retrying, after_log, wait_fixed alembic_version = tuple(int(v) for v in __alembic_version__.split(".")[0:3]) current_dir = Path(sys.argv[0] if __name__ == "__main__" else __file__).parent.resolve() default_ini = current_dir / "alembic.ini" migration_dir = current_dir / "migration" discovered_cache = os.path.expanduser( "~/.simcore_postgres_database_cache.json") log = logging.getLogger("root") if __name__ == "__main__": # swallows up all log messages from tests # only enable it during cli invocation fileConfig(default_ini)