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() |