問題タブ [flask-migrate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2631 参照

postgresql - Alembic が正しい変更を生成しない

を使用してFlask-Migrate==2.0.0います。変更を正しく検出していません。python manage db migrate以前のリビジョンでは正常に追加されていましたが、実行するたびにすべてのモデルのスクリプトが生成されます。テーブルに 2 つの新しい列を追加しました。移行リビジョンには、すべてのテーブルが追加される代わりに、それらの 2 つの新しい列のみが含まれているはずです。不足しているものはありますか?

編集1

これが何が起こっているかです。プロジェクトに Flask_Migrate を追加しました。

モデル用のFlask-Migrate生成テーブルと、リビジョンを持つalembic_versionテーブル

985efbf37786

この後、いくつかの変更を加えました。テーブルの 1 つに 2 つの新しい列を追加し、コマンドを再度実行しました

新しいリビジョンを生成しました

934ba2ddbd44

ただし、これら 2 つの新しい列だけを追加するのではなく、リビジョンにはすべてのテーブルとこれら 2 つの新しい列のスクリプトが含まれています。たとえば、最初のリビジョンでは、次のようなものがあります

2 番目のリビジョンにも、まったく同じコードが含まれています。すでに生成されている場合、その理由がわかりません。

少しグーグルで調べたところ、問題はhttps://github.com/miguelgrinberg/Flask-Migrate/issues/93とまったく同じように見えますが、Oracle DB は使用していません。Postgresql を使用しています。また、効果があるかどうかはわかりませんが、デフォルトのパブリックスキーマでテーブルを作成していません。代わりに、テーブルがたくさんあるので(約100)、2つの新しいスキーマ(schema_aとschema_b)を作成しています。だからそれらを整理するだけです。

編集2

最初の問題は、追加することで解決したようです

include_schemas=True

env.pyで。

現在、新しい移行では、既存のテーブルを再度作成しようとはしていませんが、外部キーに問題があります。新しいリビジョンを作成するたびに、既存の外部キーを削除してから追加しようとします。ログはこんな感じ

各外部キー制約に名前を追加しようとしましたが、効果はありません。

0 投票する
3 に答える
3819 参照

python - SQLAlchemy/Alembic を使用しているときに保留中の移行があるかどうかを確認する方法は?

SQLAlchemy と Alembic を (Flask-SQLAlchemy と Flask-Migrate と共に) 使用しています。保留中の移行があるかどうかを確認する方法は?

Alembic と Flask-Migrate の両方のドキュメントを確認しようとしましたが、答えが見つかりませんでした。

0 投票する
1 に答える
859 参照

flask - 複数のプロジェクトで Alembic Migrations を使用する

Flask-Migrate と Alembic を使用する 2 つの Flask アプリケーションがあります。

3 つのテーブルがあり、1 つのテーブルは 2 つの Flask アプリケーション間で共有され、次のように表されます。shared_models.py

共有テーブルにプロジェクト alembic_version の 1 つがスタンプされ、shared_models.pyファイルが同一であるにもかかわらず、他のプロジェクトがそれについて不平を言うという問題に直面しています。

この種の環境を処理するための優れた戦略は何ですか?

0 投票する
5 に答える
12586 参照

python - Flask-Migrate コマンド 'flask db init' でアプリ ファイルが見つかりません

まず、ここに投稿された Python Flask チュートリアルに従っています: https://scotch.io/tutorials/build-a-crud-web-app-with-python-and-flask-part-one

以下を実行する「移行」セクションまで、すべてがスムーズに機能していました。

... 次のエラーで失敗しました:

このコマンドが正常に実行されるため、 $FLASK_APP 環境変数が設定されていることはわかっています。

アプリの実行時にこれが正常に実行されるのに、移行リポジトリを作成しようとすると実行されない理由を誰かが提案できますか?

この件に関して他の場所で見つけることができる最も近いものは次のとおりpython -mです。

0 投票する
1 に答える
1358 参照

python - Flask Migration で整数配列を定義して新しいテーブルを作成する方法

Postgresql データベース用の Flask Migration ツールを使用してテーブルを作成したいと考えています。

私はフラスコモデルを次のように書きました:

allow_center_list 列に整数配列を使用したい。

「flask db upgrade」コマンドを実行しようとすると (init および migrate コマンドを実行した後)、次のようなエラーが発生します。

Flask SQLAlchemy モデルで整数配列を定義する方法を教えてください。

0 投票する
0 に答える
725 参照

flask - Flask-Script および Flask-Migrate ユーティリティを Flask アプリケーションにパッケージ化する

flaskを使用してアプリケーションを設計していflask-sqlalchemyます。モデルの変更に合わせてデータベースの移行を制御するために、flask-migratealembic をラップしてflask-script管理コンテキスト内で使用しています。

次の目標を達成するためにパッケージ配布を分割する方法を決定しようとしています

  1. メイン アプリケーション パッケージの依存関係の最小セット
  2. メインのアプリケーション モジュールに応じて、おそらくセカンダリ パッケージを使用して、移行と展開のための管理スクリプトとテスト データの配布を許可する

プロジェクトの構造は次のとおりです。

manage.pyは次のように見えます。これは、オブジェクトをアプリにアタッチすることで、メイン アプリケーション パッケージの依存関係を回避する方法alembicです。これにより、一般的なフラスコ/アプリ構成と同じ構成ファイルで移行構成を制御することもできます (構成コンテキストはマネージャーによってプッシュされ、.flask-migrateMigratemanage.pyMigrate.init_app

アプリケーションサブマネージャーは、sqlalchemy を使用してテーブルを作成し、ディレクトリから test_data をテーブルに入力するmyapp.database.database_managerコマンドを有効にしますが、移行スクリプトをフックせず、アプリケーション構成コンテキストを使用して/コマンドを実行できるようにします。python manage.py database create/drop/test_datatests/python manage.py migration init/revision/migrate/...flask-migratealembic

このアプリケーションを配布して、内部サーバーにデプロイしようとしています。現在使用されているように、2 つの配布ユース ケースがあります。

  1. 新しいサーバーをインストールする

    • ソース配布をインストールする
    • DBホストなどを反映するために新しい設定ファイルを作成します。
    • manage.py -c /path/to/configでデータベース テーブルを作成するために使用します。database create
    • HTTP サーバーを wsgi.py に向ける
  2. 既存のサーバーを更新する

    • ソース配布の更新
    • 現在のアプリ コンテキストを使用manage.py -c /path/to/server/config migration upgradeしてデータベースをプルアップするために使用します
    • サーバーは wsgi.py を指し続けます

myappこのディストリビューションをホイール/パッケージに移動して、企業のイントラネットでの展開を自動化できるようにしたいと考えています。ここで見ているのは、 Flask フレームワークの依存関係と wsgi エントリポイントのみを使用して、パッケージをメイン パッケージに分割したいということです。、、およびディレクトリがmyapp-manage含まれます。manage.pytestsmigrations

したがって、完璧な世界では、アプリケーションはグローバル構成ファイルを使用してシステムにインストールされ、特定の管理ユーザーが管理パッケージにアクセスしてアップグレードを実行できます。

現在、ディストリビューションを分割し、同じソース ディストリビューションから 2 つの別個のパッケージを作成しようsetup-app.pyとしています。setup-manage.py移行スクリプトと管理スクリプトをフラスコ アプリケーションにパッケージ化するより適切な方法はありますか? 私はドキュメントを掘り下げましたが、flask アプリケーションをパッケージ化する方法は明確ですが、管理スクリプトと移行の配布戦略はあまり明確ではありません。