run_migrations_online()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 23
rs 9.0856
cc 2
1
from __future__ import with_statement
2
from alembic import context
3
from sqlalchemy import engine_from_config, pool
4
from logging.config import fileConfig
5
from flask import current_app
6
7
# this is the Alembic Config object, which provides
8
# access to the values within the .ini file in use.
9
config = context.config
10
11
# Interpret the config file for Python logging.
12
# This line sets up loggers basically.
13
fileConfig(config.config_file_name)
14
15
# add your model's MetaData object here
16
# for 'autogenerate' support
17
# from myapp import mymodel
18
# target_metadata = mymodel.Base.metadata
19
config.set_main_option('sqlalchemy.url', current_app.config.get('SQLALCHEMY_DATABASE_URI'))
20
target_metadata = current_app.extensions['migrate'].db.metadata
21
22
# other values from the config, defined by the needs of env.py,
23
# can be acquired:
24
# my_important_option = config.get_main_option("my_important_option")
25
# ... etc.
26
27
28
def run_migrations_offline():
29
    """Run migrations in 'offline' mode.
30
31
    This configures the context with just a URL
32
    and not an Engine, though an Engine is acceptable
33
    here as well.  By skipping the Engine creation
34
    we don't even need a DBAPI to be available.
35
36
    Calls to context.execute() here emit the given string to the
37
    script output.
38
39
    """
40
    url = config.get_main_option("sqlalchemy.url")
41
    context.configure(url=url)
42
43
    with context.begin_transaction():
44
        context.run_migrations()
45
46
47
def run_migrations_online():
48
    """Run migrations in 'online' mode.
49
50
    In this scenario we need to create an Engine
51
    and associate a connection with the context.
52
53
    """
54
    engine = engine_from_config(
55
                config.get_section(config.config_ini_section),
56
                prefix='sqlalchemy.',
57
                poolclass=pool.NullPool)
58
59
    connection = engine.connect()
60
    context.configure(
61
                connection=connection,
62
                target_metadata=target_metadata
63
                )
64
65
    try:
66
        with context.begin_transaction():
67
            context.run_migrations()
68
    finally:
69
        connection.close()
70
71
if context.is_offline_mode():
72
    run_migrations_offline()
73
else:
74
    run_migrations_online()
75