0
我使用SQLAlchemy的,遷移來管理我的PostgreSQL數據庫遷移時刪除數據。我改變了__tablename__
一個模型,並在運行遷移數據庫中更改了名稱,但在表中的所有行被刪除。如何在不刪除數據的情況下重命名模型?SQLAlchemy的,遷移重命名模型
class Contract(db.Model):
__tablename__ = 'contract'
id = db.Column(db.Integer, primary_key=True)
is_valid = db.Column(db.Boolean, default=IS_VALID)
我從contract
重命名爲contracts
,並得到此遷移:
def upgrade(migrate_engine):
pre_meta.bind = migrate_engine
post_meta.bind = migrate_engine
pre_meta.tables['contract'].drop()
post_meta.tables['contracts'].create()
它刪除舊錶,並創建一個新的。我從未檢查過其他遷移腳本,因爲它們始終運行而不丟棄數據。
請包括您的(相關)定義,包括您的更改之前和之後以及您使用的遷移。換句話說,產生[mcve]。這聽起來像是你已經在類構造完成之後試圖在實時系統中爲模型類「__tablename__」屬性分配一個新值。正如你已經想出的那樣,這將不起作用,因爲相應的'Table'對象是在類構造期間由Declarative構造的。重命名PostgreSQL中的表很簡單,並且不需要任何下降:'ALTER TABLE the_table重命名爲another_table;'。 –