私はかなり標準的なフラスコアプリを持っています。 flask_sqlalchemy
を使用してpostgres
サーバーとalembic
への接続を管理して移行を管理します。複数のデータベースでのalembicの使用
ここで私は別のプロジェクトと統合する過程にあります。つまり、別のデータベースから単一のモデルを取得できるようにしようとしています。幸運にも、flask_sqlalchemy
はSQLALCHEMY_BINDS
フラグでこれを大きくサポートしています。だから私はそう新しいモデルを設定して私のアプリを持っている:
class CoreUser(UserMixin, db.Model):
__bind_key__ = 'core'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(255), unique=True)
これまでのところとても良い。私のアプリはこの時点で他のデータベースをチェックします。しかしここでマイナスです。私はalembic
を使用して実際にデータベース内のすべてのスキーマを管理していますので、私は通常のalembic revision --autogenerate
スクリプトを実行すると、実際にはこの2番目のデータベースに何もしません。そして、ちょうどのパズル。
代わりに、適切なcore_user
リレーションシップを最初のデータベースに設定します。このスキーマ定義に遭遇したときに、別のデータベースにリレーションシップを作成する必要があることを、アレムビックにどのように示すことができますか?
this(古代)スレッドの助言に、以下のように私は私のalembic.ini
ファイルを更新しようとしました:
[core_db]
sqlalchemy.url = <DATABASE_URI>
script_location = alembic
し、次のコマンドを実行している:
alembic -n core_db revision --autogenerate
alembic -n core_db upgrade head
とリビジョンしばらくこれが失敗しない場合、core_db
sqlalchemy.url
パラメータで示されるデータベースに実際に作成された関係はありません。
私は4年前のGoogleグループスレッドよりも優れたドキュメントを見つけることができませんでしたが、私の現在のアプローチは機能していないようで、次のステップはありません。私は適切なalembic
ドキュメントを見つけることができませんが、これは非常に単純で一般的な使用例のようです。したがって、これはサポートされていないとは想像できません。
アドバイスはありますか?
最後にこの問題に移行しましたか? :) –
@NikolayFominyhはい、私はそれが実際にはこれを処理していないことを認識した。 –