我有一个数据库,其中包含Python代码未使用的现有表。我使用Flask Migrate生成了一个迁移并运行它,它在创建用户表时删除了我现有的表。如何在不删除任何现有表的情况下运行迁移?在
我阅读了问题“Preserve existing tables in database when running Flask-Migrate”的答案,但它对我不起作用,因为我不拥有数据库,而且我不知道在部署时可能存在哪些表。。。这意味着我不能列出应该保留的表。在
Is there a way to tell Flask-migrate/Alembic not to drop any tables that it doesn't know about?
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'my_data'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
if __name__ == '__main__':
manager.run()
您可以使用^{} 并在删除前进行自动检查。
重写
ops.DropTableOp
操作。在如果需要,还可以输入一个只删除您确实可以控制的表的设置。这些将是从您的
Base
(对于纯alembic)或db.Model
(对于烧瓶)继承的那些。在示例
注意,在
env.py
文件中执行context.configure
时,需要将writer
对象传递给process_revision_directives
kwarg。(见文件)相关问题 更多 >
编程相关推荐