python flask框架学习(三):flask_script,flask_migrate

1. manager的作用:可以在终端使用指令来操作程序
2. @manager.option的作用:可以在终端使用指令传参
3. Flask-Migrate是一个为Flask应用处理SQLAlchemy数据库迁移的扩展,使得可以通过Flask的命令行接口或者Flask-Scripts对数据库进行操作。

manager.py

#1. 导入Manager
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand

from main import create_app
from db import db
from apps.cms import models

CMSUser = cms_models.CMSUser

app = create_app()
#2. 创建Manager对象,传入flask app作为参数
manager = Manager(app)

#
Migrate(app, db)
#添加'db'命令
manager.add_command('db', MigrateCommand)

#2. 通过命令行传参赋值给对应的变量,例如命令行添加-u abc,相当于username=abc
@manager.option('-u', '--username', dest='username')
@manager.option('-p', '--password', dest='password')
@manager.option('-e', '--email', dest='email')
def create_cms_user(username, password, email):
    user = CMSUser(username=username, password=password, email=email)
    db.session.add(user)
    db.session.commit()
    print('add user model success')


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

# 命令行脚本
$ python manage.py db init   初始化数据库,会创建一个migations文件夹,并且会在数据库中生成一个alembic_version表
$ python manage.py db migrate  创建迁移历史
$ python manage.py db upgrade  更新数据库
# 插入一条数据
$ python manage.py create_cms_user -u cooqes -p 111111 -e [email protected]

db.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

main.py

from flask import Flask
from apps import *
import config
from db import db


def create_app():
    _app = Flask(__name__)
    _app.config.from_object(config)

    _app.register_blueprint(cms_bp)
    _app.register_blueprint(common_bp)
    _app.register_blueprint(front_bp)
    #初始化db配置
    db.init_app(_app)
    return _app


if __name__ == '__main__':
    app = create_app()
    app.run()

apps/cms/models.py

from datetime import datetime

from db import db


class CMSUser(db.Model):
    __tablename__ = 'cms_user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(50), nullable=False)
    password = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(50), nullable=False, unique=True)
    join_time = db.Column(db.DateTime, default=datetime.now)

你可能感兴趣的:(python flask框架学习(三):flask_script,flask_migrate)