create_allではなくマイグレーションが必要な理由
稼働中のスキーマを手作業で編集する危険性を学びます
「create_allではなくマイグレーションが必要な理由」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。
スキーマは常に変化する
実際のアプリは変化するため、テーブルも変える必要があります。機能の成長に合わせて、カラムの追加、フィールド名の変更、古いフィールドの削除を行います。🔄
create_allは最初の1回しか構築しない
以前確認した制限を思い出してください。create_allは存在しないテーブルを作成するだけで、すでに存在するテーブルには決して手を加えません。
db.create_all()誘惑される危険な修正方法
よく思いつく修正方法は、テーブルを削除してから作り直すことです。デモでは動作しますが、すべての行をdeletesするため、本番環境では到底受け入れられません。
db.drop_all()
db.create_all()手作業での編集は危険
稼働中のデータベースで生のALTER TABLEを手作業で実行するのは不安定です。1つのタイプミスや手順漏れで、簡単には元に戻せない形でデータがcorruptする可能性があります。
マイグレーションとは
migrationは、スキーマをあるバージョンから次のバージョンへ、安全かつ繰り返し実行できる手順で移行する小さなスクリプトです。
バージョン管理され、順序付けられる
各マイグレーションにはバージョンIDがあり、その1つ前のマイグレーションを指します。これらが連なって、すべてのスキーマ変更のhistoryを順序どおりに形成します。
適用と巻き戻し
マイグレーションには2つの経路があります。upgradeで変更を適用し、問題が発生した場合はdowngradeで元に戻します。
def upgrade():
...
def downgrade():
...Flask-MigrateがAlembicをラップする
Flask-Migrateは、スキーマの変更を検出してマイグレーションスクリプトを作成するツール、Alembicにアプリを接続します。
現在のバージョンを追跡する
マイグレーションは、alembic_versionというテーブルに現在のスキーマバージョンを記録するため、ツールは常に現在位置を把握できます。
すべての環境で安全に使える
同じマイグレーションスクリプトを開発用ノートパソコン、CI、本番環境で実行できるため、すべての環境のスキーマをidenticalにできます。
切り替えるタイミング
create_allを使うのは、最初のプロトタイプだけにしてください。モデルが変わり始めた時点で、恒久的にmigrationsへ移行します。
クイックチェック
テーブルが存在し、カラムを追加したばかりです。なぜcreate_allに頼ってはいけないのでしょうか?
まとめ
create_allではスキーマを発展させられない理由と、migrationsによって安全でバージョン管理された、元に戻せる変更を行う方法を学びました。🎉
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「create_allではなくマイグレーションが必要な理由」レッスンは無料ですか?
はい。「create_allではなくマイグレーションが必要な理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。
「create_allではなくマイグレーションが必要な理由」で何を学びますか?
稼働中のスキーマを手作業で編集する危険性を学びます ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Flask Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「create_allではなくマイグレーションが必要な理由」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このFlask Academyレッスンでコードを書いて実行できますか?
はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- create_allではなくマイグレーションが必要な理由
- マイグレーションを初期化して自動生成する
- upgradeで適用とロールバックを行う
- 生成されたスクリプトを確認して編集する