Esempio n. 1
0
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.')
Esempio n. 2
0
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.')
Esempio n. 3
0
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
Esempio n. 4
0
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.')
Esempio n. 5
0
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.')
Esempio n. 6
0
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'