Flask-Migrate 拡張機能を使用して Python の Flask フレームワークでデータベースを移行するチュートリアル
システムをアップグレードする際、サーバー側のデータ構造やその他の操作を更新する必要が生じることがよくあります。以前の方法では、SQL スクリプトを手動で作成していましたが、漏れが見つかり、プログラムが実行できなくなることがよくありました。サーバーにリリースされた後は通常どおり使用されます。
Flask-Migrate プラグインを使用して問題を解決できます。Flask-Migrate プラグインは、有名な SQLAlchemy 作者によって開発されたデータ移行ツールです。
具体的な操作は次のとおりです。
1. Flask-Migrate プラグインをインストールします
$ pip install Flask-Migrate
db = SQLAlchemy(app) migrate = Migrate(app, db) manager = Manager(app) manager.add_command('db', MigrateCommand)
3. 初期化
$ python app.py db init
Flask-Migrate を使用してデータベースを移行する
開発が進むにつれて、データベース モデルを変更する必要があることがわかり、その場合はデータベースを更新する必要があります。
Flask-SQLAlchemy は、データベース テーブルが存在しなくなった場合にのみモデルからデータベース テーブルを作成するため、テーブルを更新する唯一の方法は古いテーブルを破棄することです。当然、データベース内のすべてのデータが失われます。
より良い解決策は、データベース移行フレームワークを使用することです。ソース コード バージョン管理ツールがソース コード ファイルへの変更を追跡するのと同じように、データベース移行フレームワークはデータベース モデルへの変更を追跡し、増分変更をデータベースに適用します。
SQLAlchemy の主な開発者は Alembic 移行フレームワークを作成しましたが、Alembic は直接使用しません。Flask アプリケーションは、Flask-Script を統合してすべての操作コマンドを提供する軽量の Alembic パッケージである Flask-Migrate 拡張機能を使用できます。
4. 移行ウェアハウスを作成します
まず、Flask-Migrate が仮想環境にインストールされている必要があります:
(venv) $ pip install flask-migrate
次に、拡張機能がどのように初期化されるかを示します:
from flask.ext.migrate import Migrate, MigrateCommand # ... migrate = Migrate(app, db) manager.add_command('db', MigrateCommand)
データベース移行コマンドを使用するために、Flask-Migrate は Flask-Script マネージャー オブジェクトに接続するための MigrateCommand クラスを提供します。この例では、コマンドへの接続に db が使用されます。
データベースの移行を維持するには、init サブコマンドを使用して移行ライブラリを作成する必要があります。
(venv) $ python hello.py db init
Creating directory /home/flask/flasky/migrations...done Creating directory /home/flask/flasky/migrations/versions...done Generating /home/flask/flasky/migrations/alembic.ini...done Generating /home/flask/flasky/migrations/env.py...done Generating /home/flask/flasky/migrations/env.pyc...done Generating /home/flask/flasky/migrations/README...done Generating /home/flask/flasky/migrations/script.py.mako...done Please edit configuration/connection/logging settings in '/home/flask/flasky/migrations/alembic.ini' before proceeding.
このコマンドは、すべての移行スクリプトを保存する移行フォルダーを作成します。
推奨事項: GitHub 上でアプリケーションのクローンを作成している場合は、git checkout 5c を実行して、このバージョンのアプリケーションに切り替えることができます。
5. 移行スクリプトを作成します
Alembic では、データベースの移行作業は移行スクリプトによって完了します。このスクリプトには、upgrade() と downgrade() という 2 つの関数があります。 upgrade() 関数は移行の一部としてデータベースの変更を実装し、downgrade() 関数はそれらを削除します。 Alembic はデータベースの変更を追加および削除する機能を備えており、履歴の任意の時点からデータベースを再構成できます。
Alembic の移行は、手動で作成することも、リビジョン コマンドと移行コマンドを使用して自動で作成することもできます。手動移行では、Alembic の Operations オブジェクト ディレクティブを使用して実装された空の upgrade() 関数と downgrade() 関数を使用して、開発者によって移行フレームワーク スクリプトが作成されます。一方、自動移行では、モデル定義とデータベースの現在の状態との相違点を探して、upgrade() および downgrade() のコードを生成します。
警告: 自動移行は必ずしも正確であるとは限らず、一部の詳細が見落とされる可能性があります。したがって、自動的に生成された移行スクリプトは常に確認する必要があります。
merge サブコマンドは自動移行スクリプトを作成します:
(venv) $ python hello.py db migrate -m "initial migration"
INFO [alembic.migration] Context impl SQLiteImpl. INFO [alembic.migration] Will assume non-transactional DDL. INFO [alembic.autogenerate] Detected added table 'roles' INFO [alembic.autogenerate] Detected added table 'users' INFO [alembic.autogenerate.compare] Detected added index 'ix_users_username' on '['username']' Generating /home/flask/flasky/migrations/versions/1bc 594146bb5_initial_migration.py...done
推奨事項: GitHub 上でアプリケーションのクローンを作成している場合は、git checkout 5c を実行して、このバージョンのアプリケーションに切り替えることができます。このアプリケーションの移行を生成する必要はないことに注意してください。すべての移行スクリプトはリポジトリに含まれています。
6. データベースを更新します
移行スクリプトがレビューされて承認されたら、db upgrade コマンドを使用してデータベースに更新できます。
(venv) $ python hello.py db upgrade
INFO [alembic.migration] Context impl SQLiteImpl. INFO [alembic.migration] Will assume non-transactional DDL. INFO [alembic.migration] Running upgrade None -> 1bc594146bb5, initial migration
最初の移行は実際には db.create_all() を呼び出すことと同じですが、後続の移行では、upgrade コマンドはテーブルを更新しますが、テーブルの内容には影響しません。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

メモ帳でPythonコードを実行するには、Python実行可能ファイルとNPPEXECプラグインをインストールする必要があります。 Pythonをインストールしてパスを追加した後、nppexecプラグインでコマンド「python」とパラメーター "{current_directory} {file_name}"を構成して、メモ帳のショートカットキー「F6」を介してPythonコードを実行します。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。
