カテゴリ: Flask 更新日: 2026/01/10

Flask-Migrateとは?データベースのマイグレーション管理をやさしく解説

Flask-Migrateとは?データベースのマイグレーション管理をやさしく解説
Flask-Migrateとは?データベースのマイグレーション管理をやさしく解説

先生と生徒の会話形式で理解しよう

生徒

「データベースの構造を途中で変えたくなったとき、どうすれば安全にアップデートできますか?」

先生

「Flask-Migrateというツールがあれば、変更履歴を管理しながらデータベースを更新できますよ。」

生徒

「履歴ってどういうことですか?ちょっと難しそうだけど…」

先生

「大丈夫!パソコンに詳しくない人にもわかるように、ゆっくり丁寧に説明しますね。」

1. マイグレーションって何?

1. マイグレーションって何?
1. マイグレーションって何?

マイグレーション(migration)は、データベースの「設計変更の履歴」を管理する仕組みです。たとえば、住所に「建物名」を追加したり、ユーザーに「電話番号」を加えたりする変更です。

建物や地図と似ていて、設計図を紙に書いて重ねていくイメージです。どのバージョンで何が変わったかを記録して、安全に変更できます。

Flask-Migrateは、PythonのFlaskアプリでその設計図を自動で作ってくれる便利ツールです。

2. Flask-Migrateは何をしてくれる?

2. Flask-Migrateは何をしてくれる?
2. Flask-Migrateは何をしてくれる?

Flask-Migrateを使うと、次のようなことが簡単になります:

  • 変更のスクリプト(ファイル)を自動作成
  • データベースのアップデートやロールバック(変更取り消し)
  • 今のデータベース構造と設計図の「差分」を確認

たとえば、料理レシピがアップデートされたときに「どこをどう変更したか」履歴がわかるような仕組みです。

3. Flask-Migrateのインストール方法

3. Flask-Migrateのインストール方法
3. Flask-Migrateのインストール方法

まずはFlask-Migrateをパソコンに入れます。コマンドプロンプトやターミナルで次を実行しましょう。


pip install Flask-Migrate

4. Flaskアプリへの組み込み方

4. Flaskアプリへの組み込み方
4. Flaskアプリへの組み込み方

Flaskとデータベース(SQLAlchemy)を使った簡単なアプリ例を見てみましょう。


from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

ここまででFlask、データベース、Flask-Migrateを連携できました。

5. マイグレーションファイルの作成

5. マイグレーションファイルの作成
5. マイグレーションファイルの作成

実際にマイグレーションファイルという設計変更の履歴ファイルを作ります。次のコマンドを使います:


flask db init
flask db migrate -m "初期テーブル作成"
flask db upgrade

flask db initで履歴フォルダを作り、migrateで変更内容をスクリプト化、upgradeで実データベースに反映です。

6. テーブルのカラムを増やしたいとき

6. テーブルのカラムを増やしたいとき
6. テーブルのカラムを増やしたいとき

たとえば「メールアドレス(email)」を追加したくなった場合は、モデルに追記します:


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(120))  # 新しいカラム

追記後、次のコマンドを順に実行します:


flask db migrate -m "add email to User"
flask db upgrade

こうすると最新の状態に安全に更新できます。

7. 元に戻したいとき(ロールバック)

7. 元に戻したいとき(ロールバック)
7. 元に戻したいとき(ロールバック)

もし変更を戻したいときは、こうします:


flask db downgrade

このdowngradeというのが「元に戻す」コマンドです。設計図が古い状態に戻ります。

8. マイグレーションの確認方法

8. マイグレーションの確認方法
8. マイグレーションの確認方法

どんな変更履歴があるかを見たいとき:


flask db history
flask db current

historyは「過去すべての変更履歴」、currentは「今の適用状況」を確認できます。

9. エラーが出たときの対処

9. エラーが出たときの対処
9. エラーが出たときの対処

「カラムを名前変更したのに反映されない」「スクリプトが作れない」など困ったときは、下記を確認しましょう:

  • モデル(Pythonのクラス)の変更を保存しているか?
  • マイグレーションファイルを確認して、alembicというツール名が出ているか?
  • flask db stamp headで状態をリセットしてから再チャレンジ

10. 初心者にやさしい使いこなしのポイント

10. 初心者にやさしい使いこなしのポイント
10. 初心者にやさしい使いこなしのポイント
  • 変更のたびにコマンドを丁寧に使う
  • マイグレーションファイルは自動生成されたコードなので、内容を読む習慣をつける
  • 本番環境でも同じコマンドで同期できるので、環境差を減らす
  • ロールバックで戻せるから、失敗しても安心!

テキスト部分の文字数は約2785文字です。

まとめ

まとめ
まとめ

Flask-Migrateは、Flaskアプリでデータベースを扱うときに欠かせない大切な仕組みであり、アプリが成長する過程で必ず必要になる「変更を記録しながら安全に反映する」ための強力な味方です。データベースというのは、一度作ったら終わりではなく、アプリを改良していけばいくほど新しい情報を加えたり、不要になったカラムを整理したり、関係性を見直したりと、常に変化していくものです。その変化を正しく整理しながら進めるために、マイグレーションという概念が生まれました。 今回の記事では、そのマイグレーションの基本から始まり、Flask-Migrateをどのようにインストールして使い始めるのか、どのようなコマンドを使って履歴を生成し、実際のデータベースに変更を反映させるのかという流れを詳しく学びました。それぞれのコマンドは短いながらも重要な役割を持っていて、使い慣れていくとデータベース管理が一気にスムーズになります。

特にflask db migrateflask db upgradeのセットは、マイグレーション作業の中心ともいえる基本操作です。モデルを編集したあとは必ず migrate で変更を記録し、upgrade で反映させるという流れをしっかり覚えておくことで、どんな変更も落ち着いて対処できるようになります。また、過去の変更一覧を確認するflask db history、現在の適用状態を確かめるflask db currentなど、履歴を追いかけながら管理するためのコマンドも非常に役立ちます。こうした履歴を確認できる仕組みは、アプリが複雑になるほど重要性が増し、チーム開発では特に威力を発揮します。

モデルを更新してカラムを追加する例では、実際のアプリ開発でよくある「ユーザーの情報を増やす」ケースを取り上げ、コードの書き方とマイグレーションの流れを体験しました。Python側のモデルクラスを編集するだけで変更内容が反映されるという点は、SQLを直接扱うのが不安な初心者でも安心して使える仕組みであり、Flask-Migrateが広く利用されている理由でもあります。さらに、ロールバック機能を使えば間違った変更を元に戻せるため、失敗を恐れず挑戦できるのも大きな魅力です。

実際の現場では、本番環境でもマイグレーションを実行することで、開発環境と本番環境のテーブル構造の差を減らし、安心して同じアプリケーションを運用することができます。初心者のうちは本番環境の更新に不安を感じることもありますが、Flask-Migrateのように自動化された仕組みをしっかり利用していけば、安全で確実なデータベース操作が可能になります。変更は履歴としてしっかり残るため、問題が起きてもどこをどう直せばいいのかを簡単に追跡できます。

また、マイグレーションファイルの中身を読む習慣を身につけることで、実際にデータベースの裏側でどのような処理が行われているのかが理解できるようになり、より深い知識へとつながります。Alembicというツールが内部で動いていることも学びましたが、その存在を意識することで、Flask-Migrateという仕組みの背景にある技術の広さにも触れることができます。理解が深まるほど、データベース設計やアプリケーションの構造にも自信が持てるようになり、さらに大きなアプリの開発にも挑戦できるようになります。

サンプルプログラム(振り返り用コード)


# Userテーブルに電話番号カラムを追加する例
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(120))
    phone = db.Column(db.String(20))  # 電話番号追加

# 変更を反映する手順
flask db migrate -m "ユーザーに電話番号を追加"
flask db upgrade
先生と生徒の振り返り会話

生徒:「マイグレーションって最初は難しそうに感じたけれど、仕組みが分かるととても安心してデータベースを変更できるようになりますね。」

先生:「そうなのですよ。履歴が記録されるというのは、とても大切なポイントです。どんな変更をしたのか、後からでもすぐに確認できるのはとても便利です。」

生徒:「モデルを変更して migrate と upgrade を実行する流れも理解できました!変更するたびに履歴が増えていくのは、本当に設計図みたいですね。」

先生:「その通りです。履歴が積み重なることで、アプリが成長していく過程をしっかり追いかけられるようになります。」

生徒:「ロールバックで元に戻せるのも心強いです。失敗しても安心なら、いろいろ実験できますね。」

先生:「怖がらずに挑戦できるのは開発において大きな強みですよ。どんどん新しいことに挑戦していきましょう。」

生徒:「はい!Flask-Migrateを使いこなして、もっと複雑なアプリを作れるようになりたいです!」

先生:「素晴らしい意欲です。しっかり技術を身につけていけば、必ず実践的なアプリも作れるようになりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Flask-Migrateとは何ですか?初心者でも使えるデータベース管理ツールですか?

Flask-Migrateは、Flaskアプリケーションで使われるデータベースのマイグレーション(設計変更履歴)を管理するツールです。初心者でも簡単に使えるように設計されており、SQLAlchemyと連携してテーブル構造の変更を自動化できます。
カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数設定方法!安全で柔軟な構成を実現しよう
No.8
Java&Spring記事人気No8
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説