アレンビックはSQLAlchemyのの著者によって書かれた、新しいデータベースの移行ユーティリティです の移行ツールは、次の機能を提供しています。:
- テーブルおよび他の構築物の構造を変更するために、データベースにALTER文を発することはでき
- 「移行スクリプト」を構築することができることにより、システムを提供します。各スクリプトは、新しいバージョンにターゲット·データベースを「アップグレード」、および必要に応じて「ダウングレード」をすることができ、同様に、逆に同じ手順を実行して一連のステップができる工程の特定の一連を示している。
- スクリプトは、いくつかの逐次的に実行することができます。
アレンビックの目的は次のとおりです。
- 非常にオープンエンドと透明構成および動作。新しいアレンビック環境はセットアップが最初に発生したときにオプションのセットの中から選択されているテンプレートのセットから生成されます。テンプレートは、データベース接続が確立され、完全にどのように移行スクリプトが呼び出される方法を定義する一連のスクリプトを堆積させる。移行スクリプト自体は、スクリプトのそのシリーズ内のテンプレートから生成されます。スクリプトは、その後、さらにデータベースがと相互作用され、どのような構造の新しい移行ファイル取る必要があります正確にどのように定義するためにカスタマイズすることができます。
- トランザクションのDDLのフルサポート。デフォルトのスクリプトのすべての移行がトランザクション内で発生することを確認する - これをサポートし、これらのデータベースのために(Postgresqlのは、Microsoft SQL Serverなど)、移行は手動で失敗したときに変更を元に戻す必要なしにテストすることができます。
- ミニマスクリプト建設。列の属性を変更、列の追加/削除、テーブル/列の名前を変更するような基本的な操作は、1ラインを介して実行することができます(alter_columnなどのコマンド)、RENAME_TABLE()、add_constraint()。関数自体は特定のDDLシーケンスを達成するために、背後ミニマルスキーマ構造を生成する - このような単純な操作のための完全なSQLAlchemyのテーブルの構造を再作成する必要はない。
- マイグレーションの「自動生成」。現実の世界の移行がはるかに複雑自動的に決定することができるものよりもですが、アレンビックはまだ変更されたスキーマから新しい移行指令を生成する際の初期の単調な作業を排除することができます。 --autogenerate機能は、SQLAlchemyののスキーマ検査機能を使用してデータベースの現在の状態を検査Pythonで指定されたデータベースモデルの現在の状態と比較して、「候補」の移行のシリーズを生成する、新しい移行にそれらをレンダリングしますPythonのディレクティブとしてスクリプト。開発者は、完成した移行を生成するために、必要に応じて追加の指令およびデータ移行を追加し、新しいファイルを編集する。制約とインデックスが同様に従うことで、表と列レベルの変化を検出することができる。
- SQLスクリプトとして生成移行のためのフルサポート。企業環境で働く私たちにとっては稀な特権ですDDLへの直接アクセスは、本番データベース上でコマンドことを知っている、とDBAはテキストのSQLスクリプトが欲しい。アレンビックの使用モデルとコマンドは、データベースに直接実行するのと同じくらい簡単にテキスト出力ファイルにマイグレーションの一連を実行することができるという方に向いている。ケアは、行のメモリ内のSELECTに依存他の操作を呼び出すしないために、このモードで撮影しなければならない - アレンビックはスクリプトベースのDDLと互換性のあるデータ指向の操作を支援するbulk_insert()のようなヘルパー構築物を提供しようとします。
- 非線形バージョニング。スクリプトはDVCSと同様にUUID識別子を与えられているし、次の1つのスクリプトの連結は、スクリプト自体の中のマーカーを介して達成される。このオープンエンドメカニズムを介して、他の移行スクリプトを含む枝をマージすることができます - 結合は、手動で新しいシーケンスを作成するためのスクリプトファイル内で編集することができます。
- すべてのSQLAlchemyのアプリケーションで使用することができ、ALTER構築物のライブラリを提供します。 DDLコンストラクトは、SQLAlchemyの自身のDDLElement基盤の上に構築し、任意のアプリケーションまたはスクリプトでスタンドアロンで使用することができます。
- 物事を変えるためにSQLiteのできないことの上に私たちの首を壊さないでください。 SQLiteは、テーブルまたは列の変更のためほとんどないサポートしています。これはアレンビックは、このプラットフォーム用のぎこちないと不十分な機能の回避策を実装する見送る、SQLiteの開発者によって設計によるものです。スキーマの移行を真剣にしている場合は、同じように深刻なのデータベースを使用する!
アレンビックのドキュメントとステータスがhttp://packages.python.org/alembic/.
Requirements:
- Pythonにあり
コメントが見つかりません