45def run_migrations_offline():
 
   46    """Run migrations in 'offline' mode. 
   48    This configures the context with just a URL 
   49    and not an Engine, though an Engine is acceptable 
   50    here as well.  By skipping the Engine creation 
   51    we don't even need a DBAPI to be available. 
   53    Calls to context.execute() here emit the given string to the 
   57    url = config.get_main_option(
"sqlalchemy.url")
 
   58    context.configure(url=url,target_metadata=target_metadata)
 
   60    with context.begin_transaction():
 
   61        context.run_migrations()
 
 
   63def run_migrations_online():
 
   64    """Run migrations in 'online' mode. 
   66    In this scenario we need to create an Engine 
   67    and associate a connection with the context. 
   70    script_location = config.get_main_option(
'script_location')
 
   72    engine = engine_from_config(
 
   73                config.get_section(config.config_ini_section),
 
   75                poolclass=pool.NullPool)
 
   77    logger.info(
'Testing for an old alembic_version table.')
 
   79    with engine.connect() 
as connection:
 
   81            connection=connection,
 
   82            target_metadata=target_metadata
 
   86        mc = context.get_context()
 
   87        current_db_revision = mc.get_current_revision()
 
   88        script = ScriptDirectory.from_config(config)
 
   89        """ If there was an existing alembic_version table, we need to 
   90        check that it's current revision is in the history for the tree 
   93        for x 
in script.iterate_revisions(
'head', 
'base'):
 
   94            if x.revision == current_db_revision:
 
   95                """ An alembic_versions table was found and it belongs to 
   99                    (
'An old alembic_version table at revision %s was ' 
  100                     'found for %s.  Renaming to alembic_version_%s.'),
 
  101                            current_db_revision, script_location,
 
  105                    with context.begin_transaction():
 
  107                            'alembic_version', 
'alembic_version_%s' 
  111                    logger.error((
'Unable to rename alembic_version to ' 
  112                                'alembic_version_%s.'),
 
  120            logger.info(
'Didn\'t find an old alembic_version table.')
 
  121        logger.info(
'Trying alembic_version_%s.' % script_location)
 
  123    """ We MAY have an alembic_version table that doesn't belong to 
  124    this tree but if we still don't have an alembic_version_<tree> 
  125    table, alembic will create it. 
  127    with engine.connect() 
as connection:
 
  129            connection=connection,
 
  130            target_metadata=target_metadata,
 
  131            version_table=
'alembic_version_' + script_location
 
  133        mc = context.get_context()
 
  134        current_db_revision = mc.get_current_revision()
 
  135        if current_db_revision:
 
  137                'Using the alembic_version_%s table at revision %s.',
 
  138                script_location, current_db_revision)
 
  140            logger.info(
'Creating new alembic_version_%s table.',
 
  143        with context.begin_transaction():
 
  144            context.run_migrations()