I created a migration with alembic revision --autogenerate
, applied it to my development database with alembic upgrade head
, and then realised it wasn't quite what I wanted.
How can I revert the migration so that I can tweak it and try again?
Alembic is keeping track of the migrations in the alembic_version table on your database. Simple drop the table to start from scratch using the following command: DROP TABLE alembic_version; And then try to run your migration again!
Delete (or move to another folder) the specific migration file (in migrations/versions folder). The head will automatically revert to the most recent remaining migration. Using stamp will set the db version value to the specified revision; not alter the head revision number.
¶ Alembic is a lightweight database migration tool for usage with the SQLAlchemy Database Toolkit for Python. Front Matter. Project Homepage. Installation.
Assuming that you only want to go back one revision, use alembic downgrade
with a relative migration identifier of -1:
alembic downgrade -1
This will run the downgrade()
method of your latest revision and update the alembic_version
table to indicate the revision you're now at.
If you need to go back multiple migrations, run
alembic history
to view a list of all the migrations in your project (from newest to oldest), then copy and paste the identifier of the migration you want to go back to:
alembic downgrade 8ac14e223d1e
There's currently no command to delete migrations from your versions directory, so if you want to completely wipe away all trace of your bad migration, you'll need to delete the version file (like 4c009570237e_add_widget_table.py
) manually.
Just a note for the answer of Mark Amery:
If you want to run to downgrade() of a version, you will need to run alembic downgrade the-version-before-it
, which mean it will revert to the version after the version that you want to downgrade.
For example, you run alembic history
and get the below list:
And assume you want to revert to cdd99ec41968
, then you will have to run command:
alembic downgrade 15972effcbd3
Which is the version before the version that we want to revert.
Hope it's clear enough.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With