Flask Manager Command @ manager.com不起作用

时间:2017-02-18 16:53:07

标签: flask initialization flask-sqlalchemy

我这里有问题。 我想在执行迁移时用记录填充数据库中的表,但实际上它并不起作用。我使用SQLAlchemy作为DB,使用Manager对象创建数据库。

在数据库中,我有一个名为'技能'其中包含' Skill'类型的对象。 我只想在初始化阶段用记录填充表格。 请帮我找到解决方案。

manage.py

#!/usr/bin/env python
import os
from app import create_app, db
from app.models import Skill
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand

app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app)
migrate = Migrate(app, db)

def make_shell_context():
    return dict(app=app, db=db, Skill=Skill)

manager.add_command("shell", Shell(make_context=make_shell_context))
manager.add_command('db', MigrateCommand)

@manager.command
def create_skill():
    db.session.add(Skill(name='ciaociao', in_use=False))
    db.session.commit()

if __name__ == '__main__':
    manager.run()

init.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from config import config

db = SQLAlchemy()

login_manager = LoginManager()
login_manager.session_protection = 'strong'
login_manager.login_view = 'auth.login'

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    db.init_app(app)
    login_manager.init_app(app)

    return app

models.py

class Skill(db.Model):
    __tablename__ = 'skills'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True)
    in_use = db.Column(db.Boolean, default=False)

0 个答案:

没有答案