def check_db(): """ Checks the database revision against the known alembic migrations. """ from inbox.ignition import db_uri inbox_db_engine = sqlalchemy.create_engine(db_uri()) # top-level, with setup.sh alembic_ini_filename = _absolute_path('../../alembic.ini') assert os.path.isfile(alembic_ini_filename), \ 'Must have alembic.ini file at {}'.format(alembic_ini_filename) alembic_cfg = alembic_config(alembic_ini_filename) try: inbox_db_engine.dialect.has_table(inbox_db_engine, 'alembic_version') except sqlalchemy.exc.OperationalError: sys.exit("Databases don't exist! Run bin/create-db") if inbox_db_engine.dialect.has_table(inbox_db_engine, 'alembic_version'): res = inbox_db_engine.execute('SELECT version_num from alembic_version') current_revision = [r for r in res][0][0] assert current_revision, \ 'Need current revision in alembic_version table...' script = ScriptDirectory.from_config(alembic_cfg) head_revision = script.get_current_head() log.info('Head database revision: {0}'.format(head_revision)) log.info('Current database revision: {0}'.format(current_revision)) if current_revision != head_revision: raise Exception( 'Outdated database! Migrate using `alembic upgrade head`') else: log.info('[OK] Database scheme matches latest') else: raise Exception( 'Un-stamped database! `bin/create-db` should have done this... bailing.')
def check_db(): # Check database revision from inbox.server.models.ignition import db_uri # needs to be after load_config() inbox_db_engine = sqlalchemy.create_engine(db_uri()) # top-level, with setup.sh alembic_ini_filename = config.get('ALEMBIC_INI', None) assert alembic_ini_filename, 'Must set ALEMBIC_INI config var' assert os.path.isfile(alembic_ini_filename), \ 'Must have alembic.ini file at {}'.format(alembic_ini_filename) alembic_cfg = alembic_config(alembic_ini_filename) try: inbox_db_engine.dialect.has_table(inbox_db_engine, 'alembic_version') except sqlalchemy.exc.OperationalError: sys.exit("Databases don't exist! Run create_db.py") if inbox_db_engine.dialect.has_table(inbox_db_engine, 'alembic_version'): res = inbox_db_engine.execute('SELECT version_num from alembic_version') current_revision = [r for r in res][0][0] assert current_revision, \ 'Need current revision in alembic_version table...' script = ScriptDirectory.from_config(alembic_cfg) head_revision = script.get_current_head() log.info('Head database revision: {0}'.format(head_revision)) log.info('Current database revision: {0}'.format(current_revision)) if current_revision != head_revision: raise Exception('Outdated database! Migrate using `alembic upgrade head`') else: log.info('[OK] Database scheme matches latest') else: raise Exception('Un-stamped database! `create_db.py` should have done this... bailing.')
def setup(): global Base engine = create_engine('sqlite:///game.db') Base.metadata.bind = engine Session = sessionmaker(bind=engine) Base.metadata.create_all() # stamp the database with the latest version tag alembic_cfg = alembic_config("alembic.ini") alembic_cfg.attributes['configure_logger'] = False alembic_command.stamp(alembic_cfg, "head") return Session
def check_db(): """ Checks the database revision against the known alembic migrations. """ from inbox.ignition import main_engine inbox_db_engine = main_engine(pool_size=1, max_overflow=0) # top-level, with setup.sh alembic_ini_path = os.environ.get("ALEMBIC_INI_PATH", _absolute_path('../../alembic.ini')) alembic_cfg = alembic_config(alembic_ini_path) alembic_basedir = os.path.dirname(alembic_ini_path) alembic_script_dir = os.path.join( alembic_basedir, alembic_cfg.get_main_option("script_location") ) assert os.path.isdir(alembic_script_dir), \ 'Must have migrations directory at {}'.format(alembic_script_dir) try: inbox_db_engine.dialect.has_table(inbox_db_engine, 'alembic_version') except sqlalchemy.exc.OperationalError: sys.exit("Databases don't exist! Run bin/create-db") if inbox_db_engine.dialect.has_table(inbox_db_engine, 'alembic_version'): res = inbox_db_engine.execute( 'SELECT version_num from alembic_version') current_revision = [r for r in res][0][0] assert current_revision, \ 'Need current revision in alembic_version table...' script = ScriptDirectory(alembic_script_dir) head_revision = script.get_current_head() log.info('Head database revision: {0}'.format(head_revision)) log.info('Current database revision: {0}'.format(current_revision)) # clean up a ton (8) of idle database connections del script gc.collect() if current_revision != head_revision: raise Exception( 'Outdated database! Migrate using `alembic upgrade head`') else: log.info('[OK] Database scheme matches latest') else: raise Exception( 'Un-stamped database! Run `bin/create-db`. bailing.')
def check_db(): """ Checks the database revision against the known alembic migrations. """ from inbox.ignition import main_engine inbox_db_engine = main_engine(pool_size=1, max_overflow=0) # top-level, with setup.sh alembic_ini_path = os.environ.get("ALEMBIC_INI_PATH", _absolute_path('../../alembic.ini')) alembic_cfg = alembic_config(alembic_ini_path) alembic_basedir = os.path.dirname(alembic_ini_path) alembic_script_dir = os.path.join( alembic_basedir, alembic_cfg.get_main_option("script_location")) assert os.path.isdir(alembic_script_dir), \ 'Must have migrations directory at {}'.format(alembic_script_dir) try: inbox_db_engine.dialect.has_table(inbox_db_engine, 'alembic_version') except sqlalchemy.exc.OperationalError: sys.exit("Databases don't exist! Run bin/create-db") if inbox_db_engine.dialect.has_table(inbox_db_engine, 'alembic_version'): res = inbox_db_engine.execute( 'SELECT version_num from alembic_version') current_revision = [r for r in res][0][0] assert current_revision, \ 'Need current revision in alembic_version table...' script = ScriptDirectory(alembic_script_dir) head_revision = script.get_current_head() log.info('Head database revision: {0}'.format(head_revision)) log.info('Current database revision: {0}'.format(current_revision)) # clean up a ton (8) of idle database connections del script gc.collect() if current_revision != head_revision: raise Exception( 'Outdated database! Migrate using `alembic upgrade head`') else: log.info('[OK] Database scheme matches latest') else: raise Exception('Un-stamped database! Run `bin/create-db`. bailing.')
basic_db_uri = 'mysql://*****:*****@localhost' engine = sqlalchemy.create_engine(basic_db_uri) # connect to server print 'Creating database: test' engine.execute("CREATE DATABASE IF NOT EXISTS test DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci") #create db engine.execute("GRANT ALL PRIVILEGES ON test.* TO inboxtest@localhost IDENTIFIED BY 'inboxtest'") #create db print 'Creating database: inbox' engine.execute("CREATE DATABASE IF NOT EXISTS inbox DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;") engine.execute("GRANT ALL PRIVILEGES ON inbox.* TO inbox@localhost IDENTIFIED BY 'inbox'") # Stamp initial alembic revision inbox_db_engine = sqlalchemy.create_engine('{uri}/{database}'.format(uri=basic_db_uri, database='inbox')) if engine.dialect.has_table(inbox_db_engine, "alembic_version"): res = inbox_db_engine.execute("SELECT version_num from alembic_version") current_revision = [r for r in res][0][0] assert current_revision, "Need current revision in alembic_version table..." print 'Already revisioned by alembic %s' % current_revision else: alembic_ini_filename = 'alembic.ini' # top-level, with setup.sh assert os.path.isfile(alembic_ini_filename), "Must have alembic.ini file at %s" % alembic_ini_filename alembic_cfg = alembic_config(alembic_ini_filename) print 'Stamping with alembic revision' alembic_command.stamp(alembic_cfg, "head") print 'Finished setting up database'