Nie wykryto zmian w autogeneracji migracji Alembica za pomocą Flask-SQLAlchemy
Mam problem z uzyskaniem przez Alembica automatycznego generowania migracji kandydatów ze zmian do klas za pomocądb.Model
(Flask-SQLAlchemy) zamiastBase
.
Zmodyfikowałemenv.py
aby utworzyć aplikację Flask, zaimportuj wszystkie odpowiednie modele, zainicjuj bazę danych, a następnie uruchom migracje:
...
uri = 'mysql://user:password@host/dbname?charset=utf8'
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = uri
app.config['SQLALCHEMY_ECHO'] = True
db.init_app(app)
with app.test_request_context():
target_metadata = db.Model.metadata
config.set_main_option('sqlalchemy.url', uri)
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()
...
To podejście działa dobrze dladrop_all()
, create_all()
(na przykład przy odtwarzaniu testowej db dla testów jednostkowych), ale wydaje się, że w tym przypadku jest to płaskie. Automatyczne skrypty wersji zawsze mają puste metody aktualizacji i obniżania wersji,na przykład,
def upgrade():
### commands auto generated by Alembic - please adjust! ###
pass
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
pass
### end Alembic commands ###
Moje zmiany obejmowały zmianę nazw kolumn, zmianę definicji kolumn,itp., nie tylko zmiany indeksów i kluczy obcych.
Czy jest ktoś, kto używa Alembica z Flask-SQLAlchemy? Jakiś pomysł, gdzie się mylę?
Dzięki wielkie!