Bird
Raised Fist0
Flaskframework~10 mins

Database migration in deployment in Flask - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Database migration in deployment
Write migration script
↓
Generate migration files
↓
Review migration files
↓
Apply migration to local DB
↓
Commit migration files
↓
Deploy to server
↓
Run migration command on server
↓
Database schema updated
↓
App uses new schema
This flow shows how migration scripts are created, tested locally, committed, deployed, and applied to update the database schema safely.
Execution Sample
Flask
from flask_migrate import Migrate, upgrade

migrate = Migrate(app, db)

# On server:
upgrade()
This code initializes migration support and runs the upgrade command to apply migrations on deployment.
Execution Table
StepActionCommand/CodeResultNotes
1Write migration scriptflask db migrate -m 'Add users table'Migration file createdDefines changes to DB schema
2Review migration fileOpen migration scriptConfirmed changes correctCheck for errors
3Apply migration locallyflask db upgradeLocal DB schema updatedTest migration works
4Commit migration filesgit add migrations/ && git commit -m 'Add migration files'Files saved in repoReady for deployment
5Deploy app to servergit push and deployNew code and migrations on serverServer ready for migration
6Run migration on serverflask db upgradeServer DB schema updatedApply changes safely
7App runs with new schemaStart appApp uses updated DBDeployment complete
💡 All migration steps completed, database schema is up to date on server
Variable Tracker
VariableStartAfter Step 1After Step 3After Step 6Final
Migration filesNoneCreatedCreatedCreatedCreated
Local DB schemaOldOldUpdatedUpdatedUpdated
Server DB schemaOldOldOldUpdatedUpdated
Key Moments - 3 Insights
Why do we run 'flask db migrate' before 'flask db upgrade'?
Because 'flask db migrate' creates the migration script describing changes, and 'flask db upgrade' applies those changes to the database. See execution_table steps 1 and 3.
Why test migration locally before deploying?
To ensure the migration script works correctly and does not break the database. This is shown in execution_table step 3.
What happens if we forget to run 'flask db upgrade' on the server?
The server database schema stays old, causing errors when the app expects new tables or columns. See execution_table step 6.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what command creates the migration script?
Aflask db upgrade
Bflask db migrate -m 'Add users table'
Cgit commit migrations/
DStart app
💡 Hint
Check Step 1 in the execution_table where migration file is created
At which step is the local database schema updated?
AStep 6
BStep 1
CStep 3
DStep 7
💡 Hint
Look at Step 3 in execution_table where local DB schema changes
If we skip committing migration files, what happens on deployment?
AMigration files missing on server, upgrade fails
BLocal DB schema updates automatically
CServer applies migrations successfully
DApp runs without database
💡 Hint
See Step 4 and 5 in execution_table about committing and deploying migration files
Concept Snapshot
Database migration in Flask:
1. Use 'flask db migrate' to create migration scripts.
2. Review and test locally with 'flask db upgrade'.
3. Commit migration files to version control.
4. Deploy code and run 'flask db upgrade' on server.
5. This updates the database schema safely without data loss.
Full Transcript
Database migration in deployment with Flask involves creating migration scripts that describe changes to the database schema. First, you run 'flask db migrate' to generate these scripts. Then, you review and apply them locally using 'flask db upgrade' to test. After confirming, you commit the migration files to your code repository. When deploying, you push the code and migration files to the server. On the server, running 'flask db upgrade' applies the schema changes to the production database. This process ensures the database structure matches the app's expectations without losing data or causing errors.

Practice

(1/5)
1. What is the main purpose of database migration in a Flask application deployment?
easy
A. To speed up the app by removing unused tables
B. To delete all existing data before deploying
C. To safely update the database structure as the app changes
D. To backup the database automatically

Solution

  1. Step 1: Understand database migration purpose

    Database migration updates the database schema to match app changes without losing data.
  2. Step 2: Compare options

    Only To safely update the database structure as the app changes describes safe schema updates; others describe unrelated or harmful actions.
  3. Final Answer:

    To safely update the database structure as the app changes -> Option C
  4. Quick Check:

    Migration = safe schema update [OK]
Hint: Migration means changing database structure safely [OK]
Common Mistakes:
  • Thinking migration deletes data
  • Confusing migration with backup
  • Assuming migration speeds up app
2. Which Flask-Migrate command initializes migration scripts in your project?
easy
A. flask db migrate
B. flask db create
C. flask db upgrade
D. flask db init

Solution

  1. Step 1: Identify command for starting migrations

    The flask db init command creates the migration folder and scripts for the first time.
  2. Step 2: Check other commands

    migrate creates migration files, upgrade applies them, create is invalid.
  3. Final Answer:

    flask db init -> Option D
  4. Quick Check:

    Init = start migration scripts [OK]
Hint: Init means start or create migration setup [OK]
Common Mistakes:
  • Using migrate before init
  • Confusing upgrade with init
  • Typing create instead of init
3. Given these commands run in order:
flask db init
flask db migrate -m "Add user table"
flask db upgrade
What happens after the last command?
medium
A. The database schema updates with the new user table
B. The migration folder is deleted
C. The app restarts automatically
D. The migration message is ignored

Solution

  1. Step 1: Understand each command effect

    init sets up migration scripts, migrate creates migration files, upgrade applies changes to the database.
  2. Step 2: Identify final effect

    After upgrade, the database schema updates to include new tables or changes.
  3. Final Answer:

    The database schema updates with the new user table -> Option A
  4. Quick Check:

    Upgrade = apply schema changes [OK]
Hint: Upgrade applies migration changes to database [OK]
Common Mistakes:
  • Thinking upgrade deletes migration files
  • Assuming app restarts automatically
  • Ignoring migration message
4. You run flask db migrate but see no new migration file created. What is the likely cause?
medium
A. You forgot to run flask db init first
B. Your database is already up to date with no changes
C. You ran flask db upgrade instead
D. You need to restart the Flask app

Solution

  1. Step 1: Understand migrate command behavior

    flask db migrate creates migration files only if there are schema changes detected.
  2. Step 2: Analyze no new file case

    If no migration file appears, it means no schema changes were found, so no new migration is needed.
  3. Final Answer:

    Your database is already up to date with no changes -> Option B
  4. Quick Check:

    No changes = no migration file [OK]
Hint: No migration file means no schema changes detected [OK]
Common Mistakes:
  • Skipping init causes errors but not no file
  • Confusing upgrade with migrate
  • Thinking app restart affects migration files
5. You deployed a Flask app and added a new column to a model. Which sequence of commands correctly updates the production database without losing data?
hard
A. flask db migrate -m "Add column" -> flask db upgrade
B. flask db upgrade -> flask db migrate -m "Add column"
C. flask db init -> flask db upgrade
D. flask db migrate -m "Add column" -> flask db init

Solution

  1. Step 1: Understand correct migration order

    First, create migration files with flask db migrate describing changes, then apply them with flask db upgrade.
  2. Step 2: Check options for correct sequence

    flask db migrate -m "Add column" -> flask db upgrade follows this order; others reverse or misuse commands.
  3. Final Answer:

    flask db migrate -m "Add column" -> flask db upgrade -> Option A
  4. Quick Check:

    Migrate then upgrade = safe update [OK]
Hint: Always migrate before upgrade to apply changes safely [OK]
Common Mistakes:
  • Running upgrade before migrate
  • Running init after migrate
  • Skipping migrate step
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard