Source code for anuket.lib.alembic_utils
# -*- coding: utf-8 -*-
""" Alembic utilities to use with database scripts."""
from pyramid.paster import get_appsettings
from sqlalchemy.exc import OperationalError
from alembic.config import Config
from anuket.models import DBSession
from anuket.models.migration import Migration
[docs]def get_alembic_settings(config_uri):
""" Get alembic settings from the config file.
:param config_uri: an .ini config file
:return: an ``alembic.config.Config`` object
"""
# get setting from the pyramid config file
settings = get_appsettings(config_uri)
# set alembic settings
alembic_cfg = Config(config_uri)
alembic_cfg.set_section_option(
'alembic',
'sqlalchemy.url',
settings['sqlalchemy.url'])
return alembic_cfg
[docs]def get_alembic_revision(config_uri):
""" Check the existence of an alembic revision in the database. If the
database is versioned, then return the current revision.
:param config_uri: an .ini file
:return: the alembic revision value or None
"""
try:
revision = DBSession.query(Migration.version_num).first()
except OperationalError:
revision = None
return revision