In Flask, database migrations are typically handled using Flask-Migrate, which is built on top of Alembic. You initialize the migrations, create migration scripts as your models change, and then apply those migrations to the database using command line tools.
In depth
Database migrations are crucial in maintaining the integrity and structure of your database as your application evolves. Flask-Migrate simplifies the process by integrating Alembic with Flask applications, allowing you to create migration scripts based on changes in your SQLAlchemy models. It tracks changes and provides a way to apply or revert migrations seamlessly. You can also manage version control of the database schema without losing data integrity. Additionally, it is essential to test migrations in a staging environment before applying them in production to avoid downtime or data loss due to potential issues in the migration scripts.
Example scenario
In a recent project, we used Flask-Migrate to manage changes in our database schema as our application evolved. Initially, we had a simple user model, but as requirements changed, we added fields like `last_login` and `profile_picture`. By running the Flask-Migrate command to create a new migration after updating the model, we generated a script that captured these changes. We then reviewed the migration script to ensure it was correct before applying it to our production database. This workflow helped us keep our database in sync with our application without losing existing user data.
Common mistakes
One common mistake is forgetting to run migrations in a staging environment before applying them in production. This can lead to unexpected issues, like breaking changes or data loss. Another mistake is modifying migration scripts post-creation instead of generating new ones, which can result in inconsistencies and confusion regarding the database state. Additionally, some developers might neglect to check for existing data integrity during migrations, leading to potential crashes if the new schema conflicts with the old data.
Follow-up questions
- Can you explain the difference between a migration and a seed?
- What strategies do you use to test migrations before production?
- How do you handle rollbacks if a migration fails?
- Have you ever faced issues during a migration, and how did you resolve them?

Want all 2,000 questions in one PDF?
- Short answers, in-depth explanations, common mistakes and follow-ups
- 89 topics, from Beginner to Architect, with a clickable contents list
- 226 extra questions that are not on this website
- Free Bonus Pack: 30-day study plan, behavioral questions, salary scripts
Includes 226 extra questions that are not on this site, plus a free Bonus Pack.
Get both books for $9.99 (save $2.99):
The material stays free to read online. This is the organised, offline, print-ready PDF edition. Secure payment by PayPal; your personal download link is emailed after payment is confirmed. Digital product, no shipping.