I have recently messed up my Alembic migrations while modifying my
SQLAlchemy models. To start with, I didn’t update the auto-generated
migration files to name the indexes/foreign keys a name, so Alembic used its
own naming scheme. This is not an actual problem until you have to modify
columns that have such constraints. I have since fixed this problem, but
first I had to find which column references what (I had no indexes other
than primary key back then, so I could go with foreign keys only). Here is
a query I put together, mostly using
this article.
Now I could easily drop such constraints using
alembic.op.drop_constraint('users_ibfk1', 'users', type_='foreignkey') and
recreate them with alembic.op.create_foreign_key('fk_user_client', 'users', 'clients', ['client_id'], ['id'])