Integrate Flask-Migrate

pull/78/head
Konstantin Gründger 2019-04-27 13:33:36 +02:00
rodzic df0f32dc30
commit 0638ff42e0
20 zmienionych plików z 104 dodań i 650 usunięć

Wyświetl plik

@ -1,71 +0,0 @@
import os
import importlib
from alembic import context
from sqlalchemy import engine_from_config, pool
from logging.config import fileConfig
# Provides access to the values within the .ini file in use.
alembic_config = context.config
# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(alembic_config.config_file_name)
# Get database path from ogn config
os.environ.setdefault('OGN_CONFIG_MODULE', 'config.default')
ogn_config = importlib.import_module(os.environ['OGN_CONFIG_MODULE'])
alembic_config.set_main_option('sqlalchemy.url', ogn_config.SQLALCHEMY_DATABASE_URI)
# Import metadata for autogeneration of migrations
from ogn.model import Base
target_metadata = Base.metadata
def run_migrations_offline():
"""Run migrations in 'offline' mode.
This configures the context with just a URL
and not an Engine, though an Engine is acceptable
here as well. By skipping the Engine creation
we don't even need a DBAPI to be available.
Calls to context.execute() here emit the given string to the
script output.
"""
url = config.get_main_option("sqlalchemy.url")
context.configure(
url=url, target_metadata=target_metadata, literal_binds=True)
with context.begin_transaction():
context.run_migrations()
def run_migrations_online():
"""Run migrations in 'online' mode.
In this scenario we need to create an Engine
and associate a connection with the context.
"""
connectable = engine_from_config(
alembic_config.get_section(alembic_config.config_ini_section),
prefix='sqlalchemy.',
poolclass=pool.NullPool)
with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata
)
with context.begin_transaction():
context.run_migrations()
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()

Wyświetl plik

@ -1,27 +0,0 @@
"""TakeoffLanding: add status, remove duration
Revision ID: 0c66dabb0be9
Revises: 5717cf8e17c
Create Date: 2016-10-31 17:54:24.170607
"""
# revision identifiers, used by Alembic.
revision = '0c66dabb0be9'
down_revision = '5717cf8e17c'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.add_column('aircraft_beacon', sa.Column('status', sa.SmallInteger))
op.create_index('ix_aircraft_beacon_status', 'aircraft_beacon', ['status'])
op.drop_column('logbook', 'duration')
def downgrade():
op.drop_column('aircraft_beacon', 'status')
op.add_column('logbook', sa.Column('duration', sa.Interval))

Wyświetl plik

@ -1,24 +0,0 @@
"""receiver_device to receiver
Revision ID: 104107d119d
Revises: 46bc73c49e0
Create Date: 2015-11-16 20:07:19.569378
"""
# revision identifiers, used by Alembic.
revision = '104107d119d'
down_revision = '46bc73c49e0'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.rename_table('receiver_device', 'receiver')
def downgrade():
op.rename_table('receiver', 'receiver_device')

Wyświetl plik

@ -1,26 +0,0 @@
"""remove unused fields from takeoff_landing
Revision ID: 163f6213d3f
Revises: 258a3f6bbdc
Create Date: 2016-06-03 20:05:20.749369
"""
# revision identifiers, used by Alembic.
revision = '163f6213d3f'
down_revision = '258a3f6bbdc'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.drop_column('takeoff_landing', 'altitude')
op.drop_column('takeoff_landing', 'ground_speed')
def downgrade():
op.add_column('takeoff_landing', sa.Column('altitude', sa.Integer))
op.add_column('takeoff_landing', sa.Column('ground_speed', sa.Float))

Wyświetl plik

@ -1,34 +0,0 @@
"""remove unnecessary pre postgis columns
Revision ID: 2004ce1566c
Revises: 277aca1b810
Create Date: 2016-04-28 18:24:14.912833
"""
# revision identifiers, used by Alembic.
revision = '2004ce1566c'
down_revision = '277aca1b810'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
import geoalchemy2 as ga
def upgrade():
# POSTGIS is fast enough, so lets forget radius, theta and phi
op.drop_column('aircraft_beacon', 'radius')
op.drop_column('aircraft_beacon', 'theta')
op.drop_column('aircraft_beacon', 'phi')
# ... and flight_state is not used
op.drop_column('aircraft_beacon', 'flight_state')
def downgrade():
op.add_column('aircraft_beacon', sa.Column('radius', sa.Float))
op.add_column('aircraft_beacon', sa.Column('theta', sa.Float))
op.add_column('aircraft_beacon', sa.Column('phi', sa.Float))
op.add_column('aircraft_beacon', sa.Column('flight_state', sa.SmallInteger))

Wyświetl plik

@ -1,28 +0,0 @@
"""add aircraft_type to device
Revision ID: 258a3f6bbdc
Revises: 7585491482
Create Date: 2016-05-25 20:16:57.990249
"""
# revision identifiers, used by Alembic.
revision = '258a3f6bbdc'
down_revision = '7585491482'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.add_column('device', sa.Column('aircraft_type', sa.Integer))
op.create_index('ix_device_aircraft_type', 'device', ['aircraft_type'])
op.create_index('ix_aircraft_beacon_aircraft_type', 'aircraft_beacon', ['aircraft_type'])
def downgrade():
op.drop_index('ix_aircraft_beacon_aircraft_type', 'aircraft_beacon')
op.drop_index('ix_device_aircraft_type', 'device')
op.drop_column('device', 'aircraft_type')

Wyświetl plik

@ -1,37 +0,0 @@
"""Full receiver beacon info
Revision ID: 269ec1bcf99
Revises: 2c7144443d8
Create Date: 2016-01-19 22:22:50.275615
"""
# revision identifiers, used by Alembic.
revision = '269ec1bcf99'
down_revision = '2c7144443d8'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.add_column('receiver_beacon', sa.Column('cpu_load', sa.Float))
op.add_column('receiver_beacon', sa.Column('cpu_temp', sa.Float))
op.add_column('receiver_beacon', sa.Column('free_ram', sa.Float))
op.add_column('receiver_beacon', sa.Column('total_ram', sa.Float))
op.add_column('receiver_beacon', sa.Column('ntp_error', sa.Float))
op.add_column('receiver_beacon', sa.Column('rt_crystal_correction', sa.Float))
op.add_column('receiver_beacon', sa.Column('rec_input_noise', sa.Float))
def downgrade():
op.drop_column('receiver_beacon', 'cpu_load')
op.drop_column('receiver_beacon', 'cpu_temp')
op.drop_column('receiver_beacon', 'free_ram')
op.drop_column('receiver_beacon', 'total_ram')
op.drop_column('receiver_beacon', 'ntp_error')
op.drop_column('receiver_beacon', 'rt_crystal_correction')
op.drop_column('receiver_beacon', 'rec_input_noise')

Wyświetl plik

@ -1,86 +0,0 @@
"""Migrate to PostGIS
Revision ID: 277aca1b810
Revises: 3a0765c9a2
Create Date: 2016-04-23 08:01:49.059187
"""
# revision identifiers, used by Alembic.
revision = '277aca1b810'
down_revision = '3a0765c9a2'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
import geoalchemy2 as ga
UPGRADE_QUERY = """
UPDATE {table_name}
SET
location = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);
"""
DOWNGRADE_QUERY = """
UPDATE {table_name}
SET
latitude = ST_Y(ST_TRANSFORM(location, 4326)),
longitude = ST_X(ST_TRANSFORM(location, 4326));
"""
def upgrade():
op.execute("CREATE EXTENSION IF NOT EXISTS postgis;");
op.add_column('airport', sa.Column('location', ga.Geometry('POINT', srid=4326)))
op.execute(UPGRADE_QUERY.format(table_name='airport'))
op.drop_column('airport', 'latitude')
op.drop_column('airport', 'longitude')
op.add_column('aircraft_beacon', sa.Column('location', ga.Geometry('POINT', srid=4326)))
op.execute(UPGRADE_QUERY.format(table_name='aircraft_beacon'))
op.drop_column('aircraft_beacon', 'latitude')
op.drop_column('aircraft_beacon', 'longitude')
op.add_column('receiver_beacon', sa.Column('location', ga.Geometry('POINT', srid=4326)))
op.execute(UPGRADE_QUERY.format(table_name='receiver_beacon'))
op.drop_column('receiver_beacon', 'latitude')
op.drop_column('receiver_beacon', 'longitude')
op.add_column('receiver', sa.Column('location', ga.Geometry('POINT', srid=4326)))
op.execute(UPGRADE_QUERY.format(table_name='receiver'))
op.drop_column('receiver', 'latitude')
op.drop_column('receiver', 'longitude')
op.add_column('takeoff_landing', sa.Column('location', ga.Geometry('POINT', srid=4326)))
op.execute(UPGRADE_QUERY.format(table_name='takeoff_landing'))
op.drop_column('takeoff_landing', 'latitude')
op.drop_column('takeoff_landing', 'longitude')
def downgrade():
op.add_column('airport', sa.Column('latitude', sa.FLOAT))
op.add_column('airport', sa.Column('longitude', sa.FLOAT))
op.execute(DOWNGRADE_QUERY.format(table_name='airport'))
op.drop_column('airport', 'location')
op.add_column('aircraft_beacon', sa.Column('latitude', sa.FLOAT))
op.add_column('aircraft_beacon', sa.Column('longitude', sa.FLOAT))
op.execute(DOWNGRADE_QUERY.format(table_name='aircraft_beacon'))
op.drop_column('aircraft_beacon', 'location')
op.add_column('receiver_beacon', sa.Column('latitude', sa.FLOAT))
op.add_column('receiver_beacon', sa.Column('longitude', sa.FLOAT))
op.execute(DOWNGRADE_QUERY.format(table_name='receiver_beacon'))
op.drop_column('receiver_beacon', 'location')
op.add_column('receiver', sa.Column('latitude', sa.FLOAT))
op.add_column('receiver', sa.Column('longitude', sa.FLOAT))
op.execute(DOWNGRADE_QUERY.format(table_name='receiver'))
op.drop_column('receiver', 'location')
op.add_column('takeoff_landing', sa.Column('latitude', sa.FLOAT))
op.add_column('takeoff_landing', sa.Column('longitude', sa.FLOAT))
op.execute(DOWNGRADE_QUERY.format(table_name='takeoff_landing'))
op.drop_column('takeoff_landing', 'location')
op.execute("DROP EXTENSION postgis;");

Wyświetl plik

@ -1,28 +0,0 @@
"""logbook changes
Revision ID: 2c7144443d8
Revises: 104107d119d
Create Date: 2015-11-27 22:05:31.417449
"""
# revision identifiers, used by Alembic.
revision = '2c7144443d8'
down_revision = '104107d119d'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.alter_column('aircraft_beacon', 'real_id', new_column_name='real_address')
op.add_column('aircraft_beacon', sa.Column('flight_state', sa.SmallInteger))
op.create_index('ix_aircraft_beacon_flight_state', 'aircraft_beacon', ['flight_state'])
def downgrade():
op.alter_column('aircraft_beacon', 'real_address', new_column_name='real_id')
op.drop_column('aircraft_beacon', 'flight_state')
op.drop_index('ix_aircraft_beacon_flight_state', 'aircraft_beacon')

Wyświetl plik

@ -1,32 +0,0 @@
"""hardware version hex to dec
Revision ID: 3a0765c9a2
Revises: 269ec1bcf99
Create Date: 2016-02-20 10:31:55.520815
"""
# revision identifiers, used by Alembic.
revision = '3a0765c9a2'
down_revision = '269ec1bcf99'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
conn = op.get_bind()
res = conn.execute("UPDATE aircraft_beacon "
"SET hardware_version = "
"16 * (hardware_version / 10) + (hardware_version % 10) "
"WHERE hardware_version IS NOT NULL")
def downgrade():
conn = op.get_bind()
res = conn.execute("UPDATE aircraft_beacon "
"SET hardware_version = "
"10 * (hardware_version / 16) + (hardware_version % 16) "
"WHERE hardware_version IS NOT NULL")

Wyświetl plik

@ -1,24 +0,0 @@
"""flarm to device
Revision ID: 46bc73c49e0
Revises:
Create Date: 2015-11-16 19:44:37.934741
"""
# revision identifiers, used by Alembic.
revision = '46bc73c49e0'
down_revision = None
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.rename_table('flarm', 'device')
def downgrade():
op.rename_table('device', 'flarm')

Wyświetl plik

@ -1,83 +0,0 @@
"""Create relations
Revision ID: 46d818bc09b
Revises: 2004ce1566c
Create Date: 2016-05-18 21:00:24.832298
"""
# revision identifiers, used by Alembic.
revision = '46d818bc09b'
down_revision = '2004ce1566c'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
import geoalchemy2 as ga
def upgrade():
op.add_column('aircraft_beacon', sa.Column('device_id', sa.Integer))
op.create_foreign_key("aircraft_beacon_device_id_fkey", "aircraft_beacon", "device", ["device_id"], ["id"], ondelete="SET NULL")
op.create_index('ix_aircraft_beacon_device_id', 'aircraft_beacon', ['device_id'])
op.add_column('aircraft_beacon', sa.Column('receiver_id', sa.Integer))
op.create_foreign_key("aircraft_beacon_receiver_id_fkey", "aircraft_beacon", "receiver", ["receiver_id"], ["id"], ondelete="SET NULL")
op.create_index('ix_aircraft_beacon_receiver_id', 'aircraft_beacon', ['receiver_id'])
op.drop_index('ix_aircraft_beacon_address', 'aircraft_beacon')
op.add_column('receiver_beacon', sa.Column('receiver_id', sa.Integer))
op.create_foreign_key("receiver_beacon_receiver_id_fkey", "receiver_beacon", "receiver", ["receiver_id"], ["id"], ondelete="SET NULL")
op.create_index('ix_receiver_beacon_receiver_id', 'receiver_beacon', ['receiver_id'])
op.add_column('takeoff_landing', sa.Column('airport_id', sa.Integer))
op.create_foreign_key("takeoff_landing_airport_id_fkey", "takeoff_landing", "airport", ["airport_id"], ["id"], ondelete="SET NULL")
op.create_index('ix_takeoff_landing_airport_id', 'takeoff_landing', ['airport_id'])
op.add_column('takeoff_landing', sa.Column('device_id', sa.Integer))
op.create_foreign_key('takeoff_landing_device_id_fkey', 'takeoff_landing', 'device', ['device_id'], ['id'], ondelete="SET NULL")
op.create_index('ix_takeoff_landing_device_id', 'takeoff_landing', ['device_id'])
op.drop_index('ix_takeoff_landing_address', 'takeoff_landing')
op.drop_index('idx_takeoff_landing_location', 'takeoff_landing')
op.drop_column('takeoff_landing', 'address')
op.drop_column('takeoff_landing', 'name')
op.drop_column('takeoff_landing', 'receiver_name')
op.drop_column('takeoff_landing', 'location')
def downgrade():
op.drop_index('ix_aircraft_beacon_device_id', 'aircraft_beacon')
op.drop_foreign_key("aircraft_beacon_device_id_fkey", "aircraft_beacon")
op.drop_column('aircraft_beacon', 'device_id')
op.drop_index('ix_aircraft_beacon_receiver_id', 'aircraft_beacon')
op.drop_foreign_key("aircraft_beacon_receiver_id_fkey", "aircraft_beacon")
op.drop_column('aircraft_beacon', 'receiver_id')
op.create_index('ix_aircraft_beacon_address', sa.Column('address', sa.String))
op.drop_index('ix_receiver_beacon_receiver_id', 'receiver_beacon')
op.drop_foreign_key("ix_receiver_beacon_receiver_id", "receiver_beacon")
op.drop_column('receiver_beacon', 'receiver_id')
op.drop_index('ix_takeoff_landing_airport_id', 'takeoff_landing')
op.drop_foreign_key("takeoff_landing_airport_id_fkey", "takeoff_landing")
op.drop_column('takeoff_landing', 'airport_id')
op.drop_index('ix_takeoff_landing_device_id', 'takeoff_landing')
op.drop_foreign_key("takeoff_landing_device_id_fkey", "takeoff_landing")
op.drop_column('takeoff_landing', 'device_id')
op.add_column('takeoff_landing', sa.Column('name', sa.String))
op.add_column('takeoff_landing', sa.Column('receiver_name', sa.String(9)))
op.add_column('takeoff_landing', sa.Column('address', sa.String(6)))
op.add_column('takeoff_landing', sa.Column('location', ga.Geometry('POINT', srid=4326)))
op.create_index('ix_takeoff_landing_address', 'takeoff_landing', ['address'])
op.create_index('idx_takeoff_landing_location', 'takeoff_landing', ['location'])

Wyświetl plik

@ -1,62 +0,0 @@
"""Added DeviceInfo
Revision ID: 4ebfb325db6
Revises: 163f6213d3f
Create Date: 2016-06-04 11:11:00.546524
"""
# revision identifiers, used by Alembic.
revision = '4ebfb325db6'
down_revision = '163f6213d3f'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.execute("CREATE TABLE device_info AS SELECT * FROM device;")
op.create_index('ix_device_info_address', 'device_info', ['address'])
op.drop_column('device_info', 'name')
op.drop_column('device_info', 'airport')
op.drop_column('device_info', 'frequency')
op.drop_column('device', 'address_origin')
op.drop_column('device', 'name')
op.drop_column('device', 'airport')
op.drop_column('device', 'aircraft')
op.drop_column('device', 'registration')
op.drop_column('device', 'competition')
op.drop_column('device', 'frequency')
op.drop_column('device', 'tracked')
op.drop_column('device', 'identified')
op.add_column('device', sa.Column('stealth', sa.Boolean))
op.add_column('device', sa.Column('software_version', sa.Float))
op.add_column('device', sa.Column('hardware_version', sa.SmallInteger))
op.add_column('device', sa.Column('real_address', sa.String(6)))
def downgrade():
op.add_column('device', sa.Column('address_origin', sa.SmallInteger))
op.add_column('device', sa.Column('name', sa.Unicode))
op.add_column('device', sa.Column('airport', sa.String))
op.add_column('device', sa.Column('aircraft', sa.String))
op.add_column('device', sa.Column('registration', sa.String(7)))
op.add_column('device', sa.Column('competition', sa.String(3)))
op.add_column('device', sa.Column('frequency', sa.String))
op.add_column('device', sa.Column('tracked', sa.Boolean))
op.add_column('device', sa.Column('identified', sa.Boolean))
op.create_index('ix_device_info_registration', 'device', ['registration'])
op.drop_column('device', 'stealth')
op.drop_column('device', 'software_version')
op.drop_column('device', 'hardware_version')
op.drop_column('device', 'real_address')
# transfer from device_info to device costs too much...
op.execute("DROP TABLE device_info;")
pass

Wyświetl plik

@ -1,48 +0,0 @@
"""update protocol to v0.2.5
Revision ID: 5717cf8e17c
Revises: 4ebfb325db6
Create Date: 2016-10-17 19:16:38.632097
"""
# revision identifiers, used by Alembic.
revision = '5717cf8e17c'
down_revision = '4ebfb325db6'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.alter_column('aircraft_beacon', 'signal_strength', new_column_name='signal_quality')
op.add_column('aircraft_beacon', sa.Column('signal_power', sa.Float))
op.add_column('receiver_beacon', sa.Column('senders_visible', sa.Integer))
op.add_column('receiver_beacon', sa.Column('senders_total', sa.Integer))
op.add_column('receiver_beacon', sa.Column('senders_signal', sa.Float))
op.add_column('receiver_beacon', sa.Column('senders_messages', sa.Integer))
op.add_column('receiver_beacon', sa.Column('good_senders_signal', sa.Float))
op.add_column('receiver_beacon', sa.Column('good_senders', sa.Integer))
op.add_column('receiver_beacon', sa.Column('good_and_bad_senders', sa.Integer))
op.add_column('receiver_beacon', sa.Column('voltage', sa.Float))
op.add_column('receiver_beacon', sa.Column('amperage', sa.Float))
def downgrade():
op.alter_column('aircraft_beacon', 'signal_quality', new_column_name='signal_strength')
op.drop_column('aircraft_beacon', 'signal_power')
op.drop_column('receiver_beacon', 'senders_visible')
op.drop_column('receiver_beacon', 'senders_total')
op.drop_column('receiver_beacon', 'senders_signal')
op.drop_column('receiver_beacon', 'senders_messages')
op.drop_column('receiver_beacon', 'good_senders_signal')
op.drop_column('receiver_beacon', 'good_senders')
op.drop_column('receiver_beacon', 'good_and_bad_senders')
op.drop_column('receiver_beacon', 'voltage')
op.drop_column('receiver_beacon', 'amperage')

Wyświetl plik

@ -1,24 +0,0 @@
"""correct airport scheme
Revision ID: 7585491482
Revises: 46d818bc09b
Create Date: 2016-05-21 20:19:24.865915
"""
# revision identifiers, used by Alembic.
revision = '7585491482'
down_revision = '46d818bc09b'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
op.execute('ALTER TABLE airport ALTER COLUMN code TYPE varchar(6)')
def downgrade():
op.execute('ALTER TABLE airport ALTER COLUMN code TYPE varchar(5)')

Wyświetl plik

@ -1,9 +1,13 @@
# A single database configuration,
# sqlalchemy.url defined in env.py
# A generic, single database configuration.
[alembic]
# path to migration scripts
script_location = alembic
# template used to generate migration files
# file_template = %%(rev)s_%%(slug)s
# set to 'true' to run the environment during
# the 'revision' command, regardless of autogenerate
# revision_environment = false
# Logging configuration
[loggers]

90
migrations/env.py 100644
Wyświetl plik

@ -0,0 +1,90 @@
from __future__ import with_statement
from alembic import context
from sqlalchemy import engine_from_config, pool
from logging.config import fileConfig
import logging
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(config.config_file_name)
logger = logging.getLogger('alembic.env')
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
from flask import current_app
config.set_main_option('sqlalchemy.url',
current_app.config.get('SQLALCHEMY_DATABASE_URI'))
target_metadata = current_app.extensions['migrate'].db.metadata
# other values from the config, defined by the needs of env.py,
# can be acquired:
# my_important_option = config.get_main_option("my_important_option")
# ... etc.
def run_migrations_offline():
"""Run migrations in 'offline' mode.
This configures the context with just a URL
and not an Engine, though an Engine is acceptable
here as well. By skipping the Engine creation
we don't even need a DBAPI to be available.
Calls to context.execute() here emit the given string to the
script output.
"""
url = config.get_main_option("sqlalchemy.url")
context.configure(url=url)
with context.begin_transaction():
context.run_migrations()
def run_migrations_online():
"""Run migrations in 'online' mode.
In this scenario we need to create an Engine
and associate a connection with the context.
"""
# this callback is used to prevent an auto-migration from being generated
# when there are no changes to the schema
# reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html
def process_revision_directives(context, revision, directives):
if getattr(config.cmd_opts, 'autogenerate', False):
script = directives[0]
if script.upgrade_ops.is_empty():
directives[:] = []
logger.info('No changes in schema detected.')
engine = engine_from_config(config.get_section(config.config_ini_section),
prefix='sqlalchemy.',
poolclass=pool.NullPool)
connection = engine.connect()
context.configure(connection=connection,
target_metadata=target_metadata,
process_revision_directives=process_revision_directives,
**current_app.extensions['migrate'].configure_args)
try:
with context.begin_transaction():
context.run_migrations()
except Exception as exception:
logger.error(exception)
raise exception
finally:
connection.close()
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()

Wyświetl plik

@ -5,6 +5,9 @@ Revises: ${down_revision | comma,n}
Create Date: ${create_date}
"""
from alembic import op
import sqlalchemy as sa
${imports if imports else ""}
# revision identifiers, used by Alembic.
revision = ${repr(up_revision)}
@ -12,9 +15,6 @@ down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
from alembic import op
import sqlalchemy as sa
${imports if imports else ""}
def upgrade():
${upgrades if upgrades else "pass"}

Wyświetl plik

@ -1,6 +1,7 @@
from flask import Flask
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_caching import Cache
from celery import Celery
@ -14,17 +15,10 @@ app = Flask(__name__)
#app.config.from_object('config.default')
app.config.from_envvar('OGN_CONFIG_MODULE')
# Bootstrap
# Initialize other things
bootstrap = Bootstrap(app)
# Sqlalchemy
db = SQLAlchemy(app)
# Cache
migrate = Migrate(app, db)
cache = Cache(app)
# Celery
celery = make_celery(app)
# Navigation
nav.init_app(app)