我有一个flask-appbuilder (FAB)项目,我想使用flask-migrate来处理数据库迁移。但是,FAB会预先自行创建数据库,因此flask-migrate无法计算迁移
我知道this example和this issue on FAB's repository,但是我不能用它们来解决问题。
这是一个显示问题的最小应用程序。
# app.py
from flask import Flask
from flask_appbuilder import AppBuilder, SQLA
from flask_migrate import Migrate
import os
from flask_appbuilder import Model
from sqlalchemy import Column, Integer
class Config():
basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = \
'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
db = SQLA()
migrate = Migrate()
appbuilder = AppBuilder()
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(config_class)
db.init_app(app)
migrate.init_app(app, db)
with app.app_context():
appbuilder.init_app(app, db.session)
appbuilder.post_init()
return app
class MyTable(Model):
__tablename__ = "my_table"
id = Column(Integer, primary_key=True)
mycol = Column(Integer)
if __name__ == "__main__":
app = create_app()
app.run()它可以使用以下requirements.txt在虚拟环境中进行测试
flask-appbuilder==3.1.0
SQLAlchemy==1.3.24
flask-migrate通过发布
export FLASK_APP=app.py
flask db init
flask db migrate输出显示为INFO [alembic.env] No changes in schema detected,因此不进行迁移。但是,已经创建了db。
注:来自my issue on FAB's repo的交叉发布
发布于 2021-06-22 00:04:19
这为我解决了这个问题。
$ flask db stamp head # Set current revision in the database to be head
$ flask db migrate
$ flask db upgradehttps://stackoverflow.com/questions/68019840
复制相似问题