gpt4 book ai didi

python - 告诉 Flask-Migrate/Alembic 不要删除任何它不知道的表

转载 作者:行者123 更新时间:2023-12-02 07:39:57 26 4
gpt4 key购买 nike

我有一个数据库,其中包含我的 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()

最佳答案

你只需要这个:

# in env.py

def include_object(object, name, type_, reflected, compare_to):
if type_ == "table" and reflected and compare_to is None:
return False
else:
return True


context.configure(
# ...
include_object = include_object

请参阅此处的文档:https://alembic.sqlalchemy.org/en/latest/cookbook.html#don-t-generate-any-drop-table-directives-with-autogenerate

关于python - 告诉 Flask-Migrate/Alembic 不要删除任何它不知道的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57631160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com