Building Data-Driven Web Apps with Flask and SQLAlchemy Transcripts
Chapter: Database migrations with Alembic
Lecture: Concept: auto-generating changes

Login or purchase this course to watch this video and the rest of the course contents.
0:00 The best way to use a Alembic I think is to let SQLAlchemy at least pre-build the various revision changes for you
0:09 and then you can edit them still if you like. In order to do that, you have to edit the env.py file, and you have to set
0:16 the target metadata to the SQLAlchemyBase.metadata and just like before, it is super important that that SQLAlchemyBase thing
0:24 sees all of your various models. That means you have to do some form of import like this from pypi.data import *
0:33 or something to that effect, to make sure that everything is loaded up. But adding these two things will connect
0:39 SQLAlchemy and Alembic so that Alembic can use your models to generate revisions and that is way, way sweeter.
0:48 So just simply setting this target metadata is all we have to do to connect our ORM models to Alembic. And then to make a change, we just add
0:56 the auto generate, like we had before but now we say auto generate this change. It's going to go detect the various changes
1:04 and then it's going to create another one of these files. We open up that file and now it's better. We have this little section in upgrade.
1:11 Instead of pass, it says these were auto generated by Alembic, please review them and if you're happy just leave them or if you need to, make changes.
1:22 Nothing happens when you auto generate this but it generates the file as it can guess and then you edit it to do what it needs.
1:29 Finally, you just apply it again and it's going to apply that auto generated revision change, rather than the one
1:36 you had to manually write, and that's Alembic. A very nice way to keep evolving your database structure, along with
1:44 the evolution of your SQLAlchemy models and for the most part making that automatic.


Talk Python's Mastodon Michael Kennedy's Mastodon