我有一个Flask应用程序,其中使用Flask-SQLAlchemy
处理数据库对象的创建和管理,并使用Flask-Migrate
完成数据库的迁移
当我尝试使用flask db migrate
创建数据库迁移时,我的一些表会在产生的迁移中被删除,类似于this issue
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected removed table 'media'
INFO [alembic.autogenerate.compare] Detected removed table 'api'
在我的virtualenv中,我有一个FLASK_APP
变量,指向包含create_app
工厂和其他工厂的类。
declare -x FLASK_APP="app/app.py"
在app/extensions.py
中,我将db
对象定义为db = SQLAlchemy()
,在app/app.py
中,我具有create_app工厂,配置扩展名和蓝图等。
from app.extensions import db
def configure_extensions(app):
# Database
db.init_app(app)
# Flask-Migrate
migrate.init_app(app, db)
def create_app():
app = Flask("app")
app.config.from_object(Config)
configure_app(app, Config)
register_blueprints(app)
configure_extensions(app)
return app
在我的模型中。我将模型类定义为db.Model
,而不是我自己的基类,这是问题吗?
from app.extensions import db, passlib
from app.database import CRUDMixin
class Media(db.Model):
__tablename__ = 'media'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(255), nullable=False)
# [sic]
我应该如何解决这个问题?
谢谢