Statistics
| Branch: | Tag: | Revision:

root / snf-pithos-backend / pithos / backends / lib / sqlalchemy / alembic / env.py @ 5f8bbf54

History | View | Annotate | Download (2 kB)

1 5f8bbf54 Sofia Papagiannaki
from __future__ import with_statement
2 5f8bbf54 Sofia Papagiannaki
from alembic import context
3 5f8bbf54 Sofia Papagiannaki
from sqlalchemy import engine_from_config, pool
4 5f8bbf54 Sofia Papagiannaki
from logging.config import fileConfig
5 5f8bbf54 Sofia Papagiannaki
6 5f8bbf54 Sofia Papagiannaki
# this is the Alembic Config object, which provides
7 5f8bbf54 Sofia Papagiannaki
# access to the values within the .ini file in use.
8 5f8bbf54 Sofia Papagiannaki
config = context.config
9 5f8bbf54 Sofia Papagiannaki
10 5f8bbf54 Sofia Papagiannaki
# Interpret the config file for Python logging. 
11 5f8bbf54 Sofia Papagiannaki
# This line sets up loggers basically.
12 5f8bbf54 Sofia Papagiannaki
fileConfig(config.config_file_name)
13 5f8bbf54 Sofia Papagiannaki
14 5f8bbf54 Sofia Papagiannaki
# add your model's MetaData object here
15 5f8bbf54 Sofia Papagiannaki
# for 'autogenerate' support
16 5f8bbf54 Sofia Papagiannaki
# from myapp import mymodel
17 5f8bbf54 Sofia Papagiannaki
# target_metadata = mymodel.Base.metadata
18 5f8bbf54 Sofia Papagiannaki
target_metadata = None
19 5f8bbf54 Sofia Papagiannaki
20 5f8bbf54 Sofia Papagiannaki
# other values from the config, defined by the needs of env.py,
21 5f8bbf54 Sofia Papagiannaki
# can be acquired:
22 5f8bbf54 Sofia Papagiannaki
# my_important_option = config.get_main_option("my_important_option")
23 5f8bbf54 Sofia Papagiannaki
# ... etc.
24 5f8bbf54 Sofia Papagiannaki
25 5f8bbf54 Sofia Papagiannaki
def run_migrations_offline():
26 5f8bbf54 Sofia Papagiannaki
    """Run migrations in 'offline' mode.
27 5f8bbf54 Sofia Papagiannaki

28 5f8bbf54 Sofia Papagiannaki
    This configures the context with just a URL
29 5f8bbf54 Sofia Papagiannaki
    and not an Engine, though an Engine is acceptable
30 5f8bbf54 Sofia Papagiannaki
    here as well.  By skipping the Engine creation
31 5f8bbf54 Sofia Papagiannaki
    we don't even need a DBAPI to be available.
32 5f8bbf54 Sofia Papagiannaki
    
33 5f8bbf54 Sofia Papagiannaki
    Calls to context.execute() here emit the given string to the
34 5f8bbf54 Sofia Papagiannaki
    script output.
35 5f8bbf54 Sofia Papagiannaki
    
36 5f8bbf54 Sofia Papagiannaki
    """
37 5f8bbf54 Sofia Papagiannaki
    url = config.get_main_option("sqlalchemy.url")
38 5f8bbf54 Sofia Papagiannaki
    context.configure(url=url)
39 5f8bbf54 Sofia Papagiannaki
40 5f8bbf54 Sofia Papagiannaki
    with context.begin_transaction():
41 5f8bbf54 Sofia Papagiannaki
        context.run_migrations()
42 5f8bbf54 Sofia Papagiannaki
43 5f8bbf54 Sofia Papagiannaki
def run_migrations_online():
44 5f8bbf54 Sofia Papagiannaki
    """Run migrations in 'online' mode.
45 5f8bbf54 Sofia Papagiannaki

46 5f8bbf54 Sofia Papagiannaki
    In this scenario we need to create an Engine
47 5f8bbf54 Sofia Papagiannaki
    and associate a connection with the context.
48 5f8bbf54 Sofia Papagiannaki
    
49 5f8bbf54 Sofia Papagiannaki
    """
50 5f8bbf54 Sofia Papagiannaki
    engine = engine_from_config(
51 5f8bbf54 Sofia Papagiannaki
                config.get_section(config.config_ini_section), 
52 5f8bbf54 Sofia Papagiannaki
                prefix='sqlalchemy.', 
53 5f8bbf54 Sofia Papagiannaki
                poolclass=pool.NullPool)
54 5f8bbf54 Sofia Papagiannaki
55 5f8bbf54 Sofia Papagiannaki
    connection = engine.connect()
56 5f8bbf54 Sofia Papagiannaki
    context.configure(
57 5f8bbf54 Sofia Papagiannaki
                connection=connection, 
58 5f8bbf54 Sofia Papagiannaki
                target_metadata=target_metadata
59 5f8bbf54 Sofia Papagiannaki
                )
60 5f8bbf54 Sofia Papagiannaki
61 5f8bbf54 Sofia Papagiannaki
    try:
62 5f8bbf54 Sofia Papagiannaki
        with context.begin_transaction():
63 5f8bbf54 Sofia Papagiannaki
            context.run_migrations()
64 5f8bbf54 Sofia Papagiannaki
    finally:
65 5f8bbf54 Sofia Papagiannaki
        connection.close()
66 5f8bbf54 Sofia Papagiannaki
67 5f8bbf54 Sofia Papagiannaki
if context.is_offline_mode():
68 5f8bbf54 Sofia Papagiannaki
    run_migrations_offline()
69 5f8bbf54 Sofia Papagiannaki
else:
70 5f8bbf54 Sofia Papagiannaki
    run_migrations_online()