我正在使用 SQLAlchemy-Migrate 来管理我的 PostgreSQL 数据库的迁移。我更改__tablename__
了模型,运行迁移更改了数据库中的名称,但表中的所有行都被删除了。如何在不删除数据的情况下重命名模型?
class Contract(db.Model):
__tablename__ = 'contract'
id = db.Column(db.Integer, primary_key=True)
is_valid = db.Column(db.Boolean, default=IS_VALID)
我将其重命名为contract
tocontracts
并获得此迁移:
def upgrade(migrate_engine):
pre_meta.bind = migrate_engine
post_meta.bind = migrate_engine
pre_meta.tables['contract'].drop()
post_meta.tables['contracts'].create()
它删除旧表并创建一个新表。我从未检查过其他迁移脚本,因为它们总是在不丢失数据的情况下运行。