Ну, я сделал хак для этого, и я опубликую его здесь, если кто-то получит выгоду от этого.
Идея состоит в том, что если в каталоге migrations/versions
есть файл с тем же именем, что и сценарий миграции, но заканчивающийся на .sql, то этот сценарий запускает его.
Поместите содержимое ниже в файл, который был создан сценарием manage.py db migrate
.
file: app.utils
from functools import wraps
from alembic import op
import sqlalchemy as sa
import inspect
def apply_migrations_update(f):
@wraps(f)
def wrap(*args, **kwargs):
import os
retval = f(*args, **kwargs)
dir_path = inspect.getfile(f)
sqlfile = dir_path[:-3] + ".sql"
if os.path.isfile( sqlfile ):
print ("Opening .sql file {}".format(sqlfile))
with open(sqlfile, 'r') as myfile:
s = sa.sql.text( myfile.read() )
op.execute(s)
print ("SQL executed.".format(sqlfile))
else:
print ("No .sql file found {}".format(sqlfile))
return retval
return wrap
и версиями файла / *. Py
"""a clever message describing schema changes
Revision ID: bc552c19h313
Revises:
Create Date: 2018-11-29 16:02:37.716660
"""
from alembic import op
import sqlalchemy as sa
from app.utils import apply_migrations_update
#...
@apply_migrations_update
def upgrade():