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
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()
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()
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
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()
def seed(): # os.remove('.db') # shutil.rmtree('migrations') with app.app_context(): init() migrate() upgrade()
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 ......................................."
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()
def migrate_db(): try: init(directory="migrations", multidb=False) except: pass finally: migrate(directory="migrations") upgrade(directory="migrations")
def deploy(): """Run deployment tasks.""" from flask_migrate import upgrade, init, migrate # migrate database to latest revision init() migrate() upgrade()
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)
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()
def deploy(): """Run deployment tasks.""" from flask_migrate import init, migrate, upgrade # migrate database to latest revision try: init() except: pass migrate() upgrade()
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()
def seed(): # os.remove('.db') # shutil.rmtree('migrations') with app.app_context(): init() migrate() upgrade() Room.add(name="test", password="")
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)
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')
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')
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()
def deploy(): """Run deployment task""" from flask_migrate import migrate, upgrade, init # init database init() # create migrations migrate() # update Database upgrade()
def setup(): init() migrate() upgrade() print("Creating roles...") Role.from_csv() print("Creating users...") User.from_csv() print("Committing...") db.session.commit() print("Done!")
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.')
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()
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()
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()
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()
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")
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()}
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()
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
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)
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()
def create_db(): init() upgrade_db()
def init(): flask_migrate.init('migrations', False)
def db_init_migrations(c, dir=None): """ Update the project to support migrations. """ with app.app_context(): migrate.init(dir)