Example #1
0
def init_app(app):
    db.init_app(app)

    # Check every table starts with app_name
    for table_name in db.metadata.tables.keys():
        if not table_name.startswith(app.name):
            raise Exception('DB table {} should start with {}'.format(
                table_name, app.name))  # noqa

    # Setup migrations
    migrations_dir = os.path.abspath(
        os.path.join(app.root_path, '..', 'migrations'))

    # Setup migrations
    with app.app_context():
        options = {
            # Use a separate alembic_version table per app
            'version_table': '{}_alembic_version'.format(app.name),
        }
        migrate.init_app(app, directory=migrations_dir, **options)
        logger.info('Starting migrations', app=app.name)
        if os.path.isdir(migrations_dir):
            try:
                flask_migrate.upgrade()
                logger.info('Completed migrations', app=app.name)
            except Exception as e:
                logger.error('Migrations failure', app=app.name, error=e)
        else:
            flask_migrate.init()

    @app.before_request
    def setup_request():
        flask.g.db = app.db

    return db
Example #2
0
def UpgradeDB():
    """ Mise à jour de la DB """
    with app.app_context():
        app.logger.info("Migration de la base de donnees...")

        try:
            flask_migrate.migrate(directory=REP_MIGRATIONS)
            app.logger.info("Migrate - Migration ok.")
        except SystemExit as e:
            app.logger.info("SystemQuit -> Erreur dans migration > migrate")
            app.logger.info(traceback.format_exc())
        except Exception, err:
            app.logger.info("Erreur dans migration > migrate.")
            app.logger.info(err)

        app.logger.info("Upgrade de la base de donnees...")
        try:
            flask_migrate.upgrade(directory=REP_MIGRATIONS)
            app.logger.info("Migrate - Upgrade ok.")
        except SystemExit as e:
            app.logger.info("SystemQuit -> Erreur dans migration > upgrade.")
            app.logger.info(traceback.format_exc())
        except Exception, err:
            app.logger.info("Erreur dans migration > upgrade.")
            app.logger.info(err)

            # Si la revision n'existe pas
            if "Can't locate revision" in str(err):
                app.logger.info("Suppression table alembic_version...")
                result = db.session.execute(
                    "DROP TABLE IF EXISTS alembic_version;")
                app.logger.info("Suppression du repertoire migrations...")
                shutil.rmtree(REP_MIGRATIONS)
                flask_migrate.init(directory=REP_MIGRATIONS)
                flask_migrate.migrate()
Example #3
0
def UpgradeDB():
    """ Mise à jour de la DB """
    with app.app_context():
        app.logger.info("Migration de la base de donnees...")
        try:
            flask_migrate.migrate(directory=REP_MIGRATIONS)
        except Exception, err:
            if "Path doesn't exist" in str(err):
                app.logger.info(
                    "Repertoire Migrations manquant -> Initialisation de flask_migrate maintenant..."
                )
                flask_migrate.init(directory=REP_MIGRATIONS)
                flask_migrate.migrate()

        app.logger.info("Migration ok.")
        app.logger.info("Upgrade de la base de donnees...")
        try:
            flask_migrate.upgrade(directory=REP_MIGRATIONS)
            app.logger.info("Upgrade ok.")
        except Exception, err:
            app.logger.info("Erreur Upgrade.")
            app.logger.info(err)

            # Si la revision n'existe pas
            if "Can't locate revision" in str(err):
                app.logger.info("Suppression table alembic_version...")
                result = db.session.execute(
                    "DROP TABLE IF EXISTS alembic_version;")
                app.logger.info("Suppression du repertoire migrations...")
                shutil.rmtree(REP_MIGRATIONS)
                flask_migrate.init(directory=REP_MIGRATIONS)
                flask_migrate.migrate()
Example #4
0
def init_app(app):
    db.init_app(app)

    # Check every table starts with app_name
    for table_name in db.metadata.tables.keys():
        if not table_name.startswith(app.name):
            raise Exception("DB table {} should start with {}".format(table_name, app.name))  # noqa

    # Setup migrations
    migrations_dir = os.path.abspath(os.path.join(app.root_path, "..", "migrations"))

    # Setup migrations
    with app.app_context():
        options = {
            # Use a separate alembic_version table per app
            "version_table": "{}_alembic_version".format(app.name)
        }
        migrate.init_app(app, directory=migrations_dir, **options)
        logger.info("Starting migrations", app=app.name)
        if os.path.isdir(migrations_dir):
            try:
                flask_migrate.upgrade()
                logger.info("Completed migrations", app=app.name)
            except Exception as e:
                logger.error("Migrations failure", app=app.name, error=e)
        else:
            flask_migrate.init()

    @app.before_request
    def setup_request():
        flask.g.db = app.db

    return db
Example #5
0
    def upgrade(self, sql):
        print('数据库开始初始化')
        with self.app.app_context():
            migrate_directory = self.app.extensions['migrate'].directory

            migrate_path, _, _ = discover_configs()
            migrate_path = os.path.join(migrate_path, migrate_directory)

            if not os.path.exists(os.path.join(migrate_path, 'alembic.ini')):
                # 判断是不是第一次初始化数据库
                is_empty = input('第一次初始化数据库,请确保你的数据库是空的。Y/N? ')
                if is_empty != 'Y':
                    return

                flask_migrate.init(migrate_path)

            flask_migrate.migrate(migrate_path, sql=sql)
            flask_migrate.upgrade(migrate_path, sql=sql)

            if is_new_databases():
                # 写入默认数据
                print('初始化模拟数据')
                init_database_default_analogdata()
                print('初始化默认业务模块')
                init_database_default_datas()

        print("数据库升级完成")
def create_db():
    """
    Run database initialization
    :return:
    """
    from flask_migrate import init, migrate, upgrade

    # initialize migrations
    migrations_dir = os.path.join(app.config['ROOT_DIR'], 'migrations')
    if not os.path.exists(migrations_dir):
        init()

    # perform database migrations
    migrate()

    # migrate database to latest revision
    upgrade()

    print("Migrations completed" + "." * 10)

    # initialize database with default records
    from app.utils import InitDatabase
    init_db = InitDatabase()

    init_db.add_stories()

    print("Database records added" + "." * 10)
 def validate_database():
     engine = connection_engine
     newDataBase = False
     #Register all database models
     from .Model import PaisModel, AudioModel, ClasificacionModel, GeneroModel
     from .Model import TecnologiaProyeccionModel, PeliculaModel, CiudadModel, ComplejoModel
     from .Model import SalaModel, FuncionModel
     if not database_exists(engine.url):  # Checks for the first time
         create_database(engine.url)  # Create new DB
         am.alert_ok(f'New Schema {DevConfig.DATABASE_SCHEMA} Created')
         newDataBase = True
     if not os.path.isdir('./migrations'):
         init(directory='migrations', multidb=False)
         am.alert_ok(f"Migrations folder created")
     migrate(directory='migrations',
             message=f'{datetime.now().strftime("%d_%m_%y_%H:%M:%S")}',
             sql=False,
             head='head',
             splice=False,
             branch_label=None,
             version_path=None,
             rev_id=None)
     upgrade(directory='migrations', revision='head', sql=False, tag=None)
     if newDataBase:
         EntityManager.seed_database()
Example #8
0
def seed():
    # os.remove('.db')
    # shutil.rmtree('migrations')
    with app.app_context():
        init()
        migrate()
        upgrade()
Example #9
0
def init_app():
    """Run database initialization."""
    from flask_migrate import init, migrate, upgrade

    # initialize migtrations
    migrations_dir = os.path.join(app.config['ROOT_DIR'], 'migrations')
    if not os.path.exists(migrations_dir):
        init()

    # perform database migrations
    migrate()

    # migrate database to latest revision
    upgrade()

    print "Migrations completed ........................................."

    # initialize database with default records
    from app.utils.initialize_db import InitDb
    init_db = InitDb()

    init_db.add_categories()
    init_db.add_developers()
    init_db.add_applications()

    print "Database records added ......................................."
Example #10
0
def create_db():
    """
    Run database initialization
    :return:
    """
    from flask_migrate import init, migrate, upgrade

    # initialize migrations
    migrations_dir = os.path.join(app.config['ROOT_DIR'], 'migrations')
    if not os.path.exists(migrations_dir):
        init()

    # perform database migrations
    migrate()

    # migrate database to latest revision
    upgrade()

    print("Migrations completed" + "." * 10)

    # initialize database with default records
    from app.utils import InitDatabase
    init_db = InitDatabase()

    init_db.add_stories()

    print("Database records added" + "." * 10)
Example #11
0
def CreationDB():
    """ Création de la DB """
    with app.app_context():
        if "mysql" in app.config["SQLALCHEMY_DATABASE_URI"]:

            # Création d'une base MySQL
            app.logger.info(
                "Creation de la base de donnees MySQL si besoin...")
            import sqlalchemy
            temp = app.config["SQLALCHEMY_DATABASE_URI"].split("/")
            url = temp[0] + "//" + temp[2]
            nom_db = temp[3].split("?")[0]
            engine = sqlalchemy.create_engine(url)
            engine.execute("CREATE DATABASE IF NOT EXISTS %s;" % nom_db)
            engine.execute("USE %s;" % nom_db)
            engine.dispose()

        app.logger.info("Creation des tables des donnees...")
        db.create_all()
        app.logger.info("Creation ok.")

        if os.path.isdir(REP_MIGRATIONS):
            app.logger.info("Suppression du repertoire migrations...")
            shutil.rmtree(REP_MIGRATIONS)

        app.logger.info("Initialisation de la migration de sqlalchemy...")
        flask_migrate.init(directory=REP_MIGRATIONS)
        app.logger.info("Initialisation ok.")

    # Mémorisation du numéro de version dans la DB
    m = Parametre(nom="version", parametre=app.config["VERSION_APPLICATION"])
    db.session.add(m)
    db.session.commit()
Example #12
0
def migrate_db():
    try:
        init(directory="migrations", multidb=False)
    except:
        pass
    finally:
        migrate(directory="migrations")
        upgrade(directory="migrations")
Example #13
0
def deploy():
    """Run deployment tasks."""
    from flask_migrate import upgrade, init, migrate

    # migrate database to latest revision
    init()
    migrate()
    upgrade()
Example #14
0
def dbinit():
    try:
        migrate_dict = Migrate(app, db)
        print(migrate_dict.directory)
        init(directory=migrate_dict.directory)
        return 'db initiated'
    except Exception as e:
        return str(e)
Example #15
0
def deploy():
    from flask_migrate import init, migrate, upgrade
    from app.cities.models import Cities
    from app.regions.models import Regions
    from app.users.models import Users

    init()
    migrate()
    upgrade()
Example #16
0
def deploy():
    """Run deployment tasks."""
    from flask_migrate import init, migrate, upgrade

    # migrate database to latest revision
    try: init()
    except: pass
    migrate()
    upgrade()
Example #17
0
 def setUp(self):
     app_ctx = manager.app.app_context()
     app_ctx.push()
     flask_migrate.init()
     flask_migrate.migrate()
     flask_migrate.upgrade()
     app_ctx.pop()
     manager.app.config['TESTING'] = True
     self.client = manager.app.test_client()
Example #18
0
def seed():
    # os.remove('.db')
    # shutil.rmtree('migrations')
    with app.app_context():
        init()
        migrate()
        upgrade()

        Room.add(name="test", password="")
Example #19
0
def init():
    """Run initial deployment tasks."""
    from flask_migrate import init, migrate, upgrade
    # determine the appropriate migration folder
    migration_path = os.environ.get('MIGRATION_PATH')
    if not migration_path: migration_path = 'migrations'
    print('Upgrading from', migration_path)
    init(migration_path)
    migrate(migration_path)
    upgrade(migration_path)
Example #20
0
def init_migrations():
    """debug only"""
    from flask_migrate import init
    if not os.path.isdir(os.getenv('MIGRATIONS', basedir + '/migrations')):
        init(directory=os.getenv('MIGRATIONS', basedir + '/migrations'))
        print 'create migration :' + os.getenv('MIGRATIONS',
                                               basedir + '/migrations')
    else:
        print 'migration already exists! path:' + os.getenv(
            'MIGRATIONS', basedir + '/migrations')
Example #21
0
    def migrate(self):
        logger.info('Applying migrations...')
        directory = str(self.migrate_dir)

        if not self.migrate_dir.exists():
            init(directory)

        with wsgi.app.app_context():
            migrate(directory, message='initial')
            upgrade(directory)
        logger.info('SUCCESSFULLY')
Example #22
0
def init_db():
    assert not config.is_production()  # not auto migrations in prod

    # Make the migrations folder if it does not already exist
    if not path.exists(config.MIGRATION_DIR):
        fm.init()

    # Make migrations
    fm.migrate(config.MIGRATION_DIR)
    fm.upgrade(config.MIGRATION_DIR)

    population.populate_study()
Example #23
0
def deploy():
    """Run deployment task"""
    from flask_migrate import migrate, upgrade, init

    # init database
    init()

    # create migrations
    migrate()

    # update Database
    upgrade()
Example #24
0
def setup():
    init()
    migrate()
    upgrade()

    print("Creating roles...")
    Role.from_csv()
    print("Creating users...")
    User.from_csv()

    print("Committing...")
    db.session.commit()
    print("Done!")
Example #25
0
def reset_db_command():
    """ clear existing tables and re-initialize database. """
    basedir = os.path.abspath(os.path.dirname(__file__))
    path = os.path.join(basedir, 'migrations')
    shutil.rmtree(path)  # removing the migrations directory...
    path = os.path.join(basedir, 'app.db')
    os.remove(path)  # remove app.db

    flask_migrate.init()  # reset everything
    flask_migrate.migrate()
    flask_migrate.upgrade()

    click.echo('Database full reset. done.')
Example #26
0
def deploy():
    from flask_migrate import upgrade
    from flask_migrate import init
    from flask_migrate import migrate
    from model.role import Role
    from model.user import User
    init(directory=migrationsdir)
    migrate(directory=migrationsdir, message='initial migration')
    upgrade(directory=migrationsdir)
    # create roles
    Role.insert_roles()
    # make all users follow themselives.
    User.add_self_follows()
Example #27
0
def CreationDB():
    """ Création de la DB """
    with app.app_context():
        app.logger.info("Creation de la base de donnees...")
        db.create_all()
        app.logger.info("Creation ok.")
        app.logger.info("Initialisation de la migration de sqlalchemy...")
        flask_migrate.init()
        app.logger.info("Initialisation ok.")
    
    # Mémorisation du numéro de version dans la DB
    m = Parametre(nom="version", parametre=app.config["VERSION_APPLICATION"])
    db.session.add(m)
    db.session.commit()
Example #28
0
def create_database():
    logging.info("Creating database")
    engine = create_engine("postgresql://*****:*****@db/postgres")
    conn = engine.connect()
    conn.execute("commit")

    try:
        conn.execute("create database {}".format(DATABASE_NAME))
        logging.info("Created database")
        init()
        logging.info("Setup database for migrations")
    except ProgrammingError:
        logging.info("Database already existed, continuing")
    finally:
        conn.close()
Example #29
0
def create_database():
    logging.info("Creating database")
    engine = create_engine("postgresql://*****:*****@localhost/postgres")
    conn = engine.connect()
    conn.execute("commit")

    try:
        conn.execute("create database {}".format(DATABASE_NAME))
        logging.info("Created database")
        init()
        logging.info("Setup database for migrations")
    except ProgrammingError:
        logging.info("Database already existed, continuing")
    finally:
        conn.close()
Example #30
0
def init_db():
    from flask_migrate import init, migrate, upgrade
    init("./test/migrations")
    with open("./test/migrations/script.py.mako", "r") as f:
        lines = f.readlines()

    for i, x in enumerate(lines):
        if "from alembic import op" in x:
            lines.insert(i, "import ormtypes\n")
            break
    with open("./test/migrations/script.py.mako", "w") as f:
        f.writelines(lines)

    migrate("./test/migrations")
    upgrade("./test/migrations")
Example #31
0
def UpgradeDB():
    """ Mise à jour de la DB """
    with app.app_context():
        app.logger.info("Migration de la base de donnees...")
        try :
            flask_migrate.migrate()
        except Exception, err :
            if "Path doesn't exist" in str(err) :
                app.logger.info("Repertoire Migrations manquant -> Initialisation de flask_migrate maintenant...")
                flask_migrate.init()
                flask_migrate.migrate()
            
        app.logger.info("Migration ok.")
        app.logger.info("Upgrade de la base de donnees...")
        flask_migrate.upgrade()
        app.logger.info("Upgrade ok.")
def migration(event, context):
    with create_app().app_context():
        # db commands can exit with os.exit(1) - we _have_ to catch that
        with wrap_io(catch=BaseException) as (out, err):

            upgrade()

            if "Please use the 'init' command" in err():
                init()
                upgrade()

            if "Target database is not up to date" in err():
                stamp()
                upgrade()

    return {"stdout": out(), "stderr": err()}
Example #33
0
def client():
    current_dir = os.path.dirname(os.path.abspath(__file__))
    sqlite_file_path = os.path.join(current_dir, 'sqlite.db')
    if os.path.exists(sqlite_file_path):
        os.remove(sqlite_file_path)
    delete_all_migrations(current_dir)

    init_config(test_db_path=os.path.join("sqlite:///" + sqlite_file_path))
    app = init_app()
    open(sqlite_file_path, 'a').close()
    with app.app_context():
        flask_migrate.init()
        flask_migrate.migrate()
        flask_migrate.upgrade()

    yield app.test_client()
Example #34
0
def instantiate_db(app):
    """Make sure the db is initialized."""
    # initialize db with flask_migrate
    with app.app_context():
        try:
            flask_migrate.init(webapp.config.ALEMBIC_PATH)
        except alembic.util.exc.CommandError as e:
            if 'already exists' in str(e):
                pass
            else:
                logger.debug('flask db init failed: %s', e)
                raise e
        flask_migrate.migrate(webapp.config.ALEMBIC_PATH)
        try:
            logger.debug('flask db upgrade')
            flask_migrate.upgrade(webapp.config.ALEMBIC_PATH)
        except Exception as e:
            logger.debug('flask db upgrade failed: %s', e)
            raise e
Example #35
0
def RepairDB():
    """ Tentative de réparation de la DB """
    with app.app_context():

        # Création du répertoire migrations si manquant
        if os.path.isdir(REP_MIGRATIONS) == False:
            app.logger.info(
                "Repertoire Migrations manquant -> Initialisation de flask_migrate maintenant..."
            )
            try:
                flask_migrate.init(directory=REP_MIGRATIONS)
            except SystemExit as e:
                pass
            except Exception as err:
                pass

        # Enregistre la dernière num_version dans la table alembic
        app.logger.info("Stamp...")
        flask_migrate.stamp(directory=REP_MIGRATIONS)
Example #36
0
def init():
    """
    [Re]cretate database, deploy and create three sample users, an image
    and some battles
    """
    from flask_migrate import init, migrate

    call(["rm", "-rf", "data-dev.sqlite", "migrations"])

    init()
    migrate()
    deploy()

    user_a = User(username='******',
                  email='*****@*****.**',
                  password='******',
                  confirmed=True)
    user_b = User(username='******',
                  email='*****@*****.**',
                  password='******',
                  confirmed=True)
    user_c = User(username='******',
                  email='*****@*****.**',
                  password='******',
                  confirmed=True)
    lenna = Image(name='lenna.png', user=user_a)
    ducklings = Image(name='ducklings.jpg', user=user_b)
    flower = Image(name='flower.jpg', user=user_c)
    battle1 = user_a.challenge(user_b, lenna)
    battle1.challenge_accepted = True
    user_c.vote(battle1, "challenger")
    battle2 = user_a.challenge(user_b, ducklings)
    battle3 = user_c.challenge(user_a, flower)

    db.session.add(user_a)
    db.session.add(user_b)
    db.session.add(user_c)
    db.session.add(lenna)
    db.session.add(battle1)
    db.session.add(battle2)
    db.session.add(battle3)
    db.session.commit()
Example #37
0
def create_db():
    init()
    upgrade_db()
Example #38
0
def init():
    flask_migrate.init('migrations', False)
Example #39
0
def db_init_migrations(c, dir=None):
    """
    Update the project to support migrations.
    """
    with app.app_context():
        migrate.init(dir)