Joe*_*Joe 4 python postgresql flask flask-sqlalchemy flask-migrate
我有以下项目结构:
项目/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db = SQLAlchemy()
migrate = Migrate()
def create_app():
    app = Flask(__name__)
    app.config.from_object(os.environ['APP_SETTINGS'])
    db.init_app(app)
    migrate.init_app(app, db)
    return app
运行文件
from project import create_app
app = create_app()
if __name__ == "__main__":
    app.run()
管理文件
from flask_script import Manager
from flask_migrate import MigrateCommand
from project.models import *
from project import create_app
manager = Manager(create_app)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
    manager.run()
然而,当我运行以下命令时,Flask-Migrate 没有检测到任何要添加的表。
python manage.py db init
哪些输出:
Creating directory $HOME/Project/migrations ... done
Creating directory $HOME/Project/migrations/versions ... done
Generating $HOME/Project/migrations/script.py.mako ... done
Generating $HOME/Project/migrations/env.py ... done
Generating $HOME/Project/migrations/README ... done
Generating $HOME/Project/migrations/alembic.ini ... done
Please edit configuration/connection/logging settings in
'$HOME/Project/migrations/alembic.ini' before proceeding.
和
python manage.py db migrate
只输出:
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
为什么带有 Alembic 的 Flask-Migrate 没有检测模型并因此创建表?这是我尝试过的:
编辑:
这是models.py文件的一个例子
from flask import current_app
from project import db
from flask_login import UserMixin
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
解决方案是在 __init__.py 文件中导入模型,如下所示:
def create_app():
    app = Flask(__name__)
    app.config.from_object(os.environ['APP_SETTINGS'])
    from project import models
    db.init_app(app)
    migrate.init_app(app, db)
    return app
| 归档时间: | 
 | 
| 查看次数: | 5055 次 | 
| 最近记录: |