标签:运行 虚拟 manager 调用 而且 bee 代码 str 技术
Flask通过DOS命令行操作管理项目和数据库迁移操作
一、插件安装
二、flask-script使用
1. 主文件:一般用于启动flask-script的Manager,可以通过主文件调用所有的函数(必须是被[Manager_obj].command装饰的函数才能被调用,而且一般不会所有的函数都定义在主文件中),比如新建并写好一个简单的py文件“manage.py”,然后就可以在DOS中使用命令“python manage.py runserver”调用了:
from flask_script import Manager from flask_script_migrate_demo import app # 实例化Manager,app为Flask实例对象,可以从其他文件导入 manage = Manager(app) # 使用此装饰器装饰的函数才能在DOS中调用 @manage.command def runserver(): # ... # print(‘The server has been started!‘) if __name__ == ‘__main__‘: manage.run() # 启动Manager
2. 子文件:子文件一般用于放置操作函数,然后通过主文件来调用,需要注意是子文件中的函数同样需要装饰器“[Manager_obj].command”,不过子文件中的Manager实例化不需要app(Flask对象)了,同时需要使用“[Manager_obj].add_command(‘[sub_manager_obj_name]‘, [sub_manager_obj])”将子文件中的Manager添加到主文件中,“sub_manager_obj_name”为子文件Manager的别名(DOS调用的就是它),如下代码在DOS中使用命令“python manage.py db db_init”调用即可:
from flask_script import Manager from flask_script_migrate_demo import app from db_scripts import DBManage manage = Manager(app) # 将子文件db_scripts的Manager对象DBManage导入,别名db_manage将用于DOS调用 manage.add_command(‘db_manage‘, DBManage) if __name__ == ‘__main__‘: manage.run() # 启动Manager
from flask_script import Manager # 需要APP(Flask对象)来实例化 DBManage = Manager() # 同样需要command装饰器 @DBManage.command def db_init(): # ... # print(‘The database has been initialized successfully!‘)
三、flask-migrate使用
1. 一般数据库模型类都是使用专门的py来定义存放的,比如“models.py”,当需求变化时,可能这些Model都已经映射到数据库中了,再想要修改时(比如新增加一列),如果没有其他插件,就只能删除数据库中的表,再重新生成了,显然这是不实用的,所以flask-migrate就显得非常有用了,它可以将代码中对数据库的修改同步更新(迁移操作)到数据库中。
2. flask-migrate插件是依赖于flask-script的,所以要使用flask-migrate,就需要先装好flask-script。
3. 基本使用(from flask_migrate import Migrate, MigrateCommand):
from flask_script import Manager from flask_script_migrate_demo import app from flask_migrate import Migrate, MigrateCommand from extends import db # db为SQLAlchemy对象 from models import User # User为db.Model的子类,即模型类,其他未导入的模型类就不能映射到数据库了 manage = Manager(app) migrate = Migrate(app, db) # 将MigrateCommand添加打Manager中,并取别名db_migrate manage.add_command(‘db_migrate‘, MigrateCommand) if __name__ == ‘__main__‘: manage.run() # 启动Manager
标签:运行 虚拟 manager 调用 而且 bee 代码 str 技术
原文地址:https://www.cnblogs.com/guyuyun/p/9261341.html