我将 Flask 与 Flask-SQLAlchemy 和 Flask-Migrate 一起使用来创建应用程序,但是当我尝试创建迁移时,什么也没有发生。
我在以下位置创建了两个表app/models.py:
from flask import current_app
from . import db
class Student(db.Model):
__tablename__ = 'students'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(64), unique=True, nullable=False)
password_hash = db.Column(db.String(128))
def __init__(self, **kwargs):
super(Student, self).__init__(**kwargs)
def __repr__(self):
return '<Tutor {}>' % self.id
class Tutor(db.Model):
__tablename__ = 'tutors'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(64), unique=True, index=True)
password_hash = db.Column(db.String(128))
def __init__(self, **kwargs):
super(Tutor, self).__init__(**kwargs)
def __repr__(self):
return '<Student %r>' % self.id
Run Code Online (Sandbox Code Playgroud)
然后我还有app/__init__.py以下代码:
from …Run Code Online (Sandbox Code Playgroud) 我有以下项目结构:
项目/__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
Run Code Online (Sandbox Code Playgroud)
运行文件
from project import create_app
app = create_app()
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
管理文件
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()
Run Code Online (Sandbox Code Playgroud)
然而,当我运行以下命令时,Flask-Migrate 没有检测到任何要添加的表。
python manage.py db init
Run Code Online (Sandbox Code Playgroud)
哪些输出:
Creating directory …Run Code Online (Sandbox Code Playgroud)