migrations/env.py
author rougeronj
Thu, 22 Jan 2015 09:26:43 +0100
changeset 111 a7b72620d227
parent 78 37bb8e326446
permissions -rw-r--r--
Add variable "wait". When this variable set, the annotsroll wait ignore some annotations, and wait before printing an otherone so there is no superposition. Can be passed as an options
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
78
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
from __future__ import with_statement
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
from alembic import context
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
from sqlalchemy import engine_from_config, pool
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
from logging.config import fileConfig
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
import config as app_config
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
import models
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
# this is the Alembic Config object, which provides
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
# access to the values within the .ini file in use.
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
config = context.config
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
# Interpret the config file for Python logging.
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
# This line sets up loggers basically.
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
fileConfig(config.config_file_name)
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
# add your model's MetaData object here
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
# for 'autogenerate' support
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
# from myapp import mymodel
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
# target_metadata = mymodel.Base.metadata
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
target_metadata = models.Base.metadata
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
# other values from the config, defined by the needs of env.py,
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
# can be acquired:
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
# my_important_option = config.get_main_option("my_important_option")
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
# ... etc.
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
def run_migrations_offline():
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    """Run migrations in 'offline' mode.
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    This configures the context with just a URL
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    and not an Engine, though an Engine is acceptable
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    here as well.  By skipping the Engine creation
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    we don't even need a DBAPI to be available.
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    Calls to context.execute() here emit the given string to the
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
    script output.
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    """
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    url = config.get_main_option("sqlalchemy.url")
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
    context.configure(url=url, target_metadata=target_metadata)
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
    with context.begin_transaction():
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
        context.run_migrations()
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
def run_migrations_online():
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    """Run migrations in 'online' mode.
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    In this scenario we need to create an Engine
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    and associate a connection with the context.
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    """
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    alembic_config = config.get_section(config.config_ini_section)
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    alembic_config['sqlalchemy.url'] = app_config.CONN_STR
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    engine = engine_from_config(
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
        alembic_config,
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
        prefix='sqlalchemy.',
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
        poolclass=pool.NullPool)
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
    connection = engine.connect()
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
    context.configure(
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
        connection=connection,
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
        target_metadata=target_metadata
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
    )
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    try:
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
        with context.begin_transaction():
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
            context.run_migrations()
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
    finally:
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
        connection.close()
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
if context.is_offline_mode():
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
    run_migrations_offline()
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
else:
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
    run_migrations_online()