私はフラスコ、SQLAlchemyの、およびflask_migrateを使用しようとしている...フラスコ移行異なるPostgresのスキーマ(__table_args__ = { 'スキーマ': 'test_schema']})を使用して
しかし毎回実行manage.pyの移行を、alembicは常に私のモデルを新しいテーブルとして検出します。
私は別のPostgresのスキーマに格納するテーブルにtable_args私のモデルでを置くことを考える:
class Entry(db.Model):
__table_args__ = {'schema': app.config['BASE_SCH']}
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
slug = db.Column(db.String(100), unique=True)
body = db.Column(db.Text)
status = db.Column(db.SmallInteger, default=STATUS_PUBLIC)
created_timestamp = db.Column(db.DateTime, default=datetime.datetime.now)
modified_timestamp = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now)
私は私のモデルのtable_args行を削除する場合は、フラスコの移行が正常に動作します。四角形のポストグラムスキーマに私のテーブルを格納する。
したがって、どのようにフラスコで異なるPostgresテーブルスキーマを使用できますか?
ありがとうございます!
生成された移行スクリプトを確認しましたか?私はそれが 'スキーマ'が不足していると仮定します。もしあなたが手動で追加すれば、あなたのためにうまくいくでしょう。 – Miguel
こんにちは@Miguel、あなたのコメントをありがとう...マイグレーションスクリプトでは、各テーブルブロックの作成の最後にスキーマ定義があります。おそらく、アレムビックは移行中に異なる表スキーム(ポストグル)を認識できないと思われます。 –
私はまったく同じ問題を抱えています。デフォルトのスキーマにないモデルを持っています。初期の移行は良く見えます(スキーマが指定されています)。しかし、 'flask db migrate'への次の呼び出しでは、最初のテーブルの正確な複製である新しい移行が作成されます。これは、AlembicはテーブルにDBがすでに存在することを認識していません。 –