Flask-Script&FLask-Migrate
Posted fengzi759
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask-Script&FLask-Migrate相关的知识,希望对你有一定的参考价值。
-
Flask-Script详解 先使用venvScriptsactivate激活环境
-
Flask-Script的作用是通过命令行的形式来操作Flask。列如通过命令跑一个开发版本的服务器、设置数据库,定时任务等 要使用Flask-Script。首先看一个最简单的列子
-
+ manage.py + from flask_script import Manager + from your_app import app + manager = Manager(app) + @manager.command + def hello(): + print("hello") + if __ name__ == ‘__ main__‘: + manager.run()
-
我们把脚本命令代码放在一个叫做manage.py文件中,然后再终端运行 python manage.py hello 命令, 就可以看到输出hello了
-
定义命令的三种方法:
-
1.使用@command装饰器: 这种方法之前已经介绍过。
-
2.使用类继承自Command类
-
+ from flask_script import Manager,Command + from your_app import app + manager = Manager(app) + @manager.command + class Hello(Commad): + "prints hello world" + def run(self): + print("hello world“) + manager.add_command(‘hello‘,Hello())
-
使用类的方式,有三点需要注意
-
必须继承自Command基类
-
必须实现run方法
-
必须通过add_command方法添加命令
-
-
-
3.使用option装饰器: 如果想要再使用命令的时候还传递参数进去,那么使用@option装饰器更加的方便: 有几个参数就需要写几个‘option‘
-
+ @manager.option(‘-n‘,‘--name‘,dest = ‘name‘) + def hello(name): + print(‘hello‘,name) + 这样调用hello命令 + python manage.py hello -n xt + 或者 + python manage.py hello --name xt + 就可以输出: hello xt
-
-
如果有一些命令是针对某个功能的。比如有一堆命令是针对ORM与表映射的,那么可以将这些命令单独放在一个文件中方便管理。也是使用"Manager的对象来添加"。然后到主manage文件中,通过manager.add_command来添加 示例代码如下
-
db_script.py from flask_script import Manager db_manager = Manager() @db_manager.command def init(): print("迁移仓库创建完毕!") manager.py from db_script import db_manager manager = Manager(app) manager.add_command("db",db_manager) 那么以后可以再命令行终端通过 python manager.py db init 访问到db_script文件里面的init函数了
-
-
-
-
-
Flask-Migrate详解
-
在实际的开发环境中,经常会发生数据库修改的行为。一般我们修改数据库不会直接手动的去修改,而是去修改ORM对应的模型,然后再把模型映射到数据库中。这时候如果有一个工具能专门做这种事情。就显得非常有用了,而flask-migrate就是做这个事情的。flask-migrate是基于Alembic进行的一个封装,并集成到Flask中,而所有的迁移操作其实都是Alembic做的,他能跟踪模型的变化,并将变化映射到数据库中,但必须要把数据库导入到这个文件中
-
要让Flask-Migrate能够管理app中的数据库,需要使用Migrate(app,db)来绑定app和数据库。示例代码如下
-
+ 再manage.py中的代码 + from app import app + from exts import db + from flask_migrate import Migrate,MigrateCommand + from flask_script import Manager + #需要把映射到数据库中的模型导入到manage.py文件中 + from models import User + manager = Manager(app) + #用来绑定app和db到flask_migrate的 + Migrate(app,db) + 添加Migrate的所有子命令到db下 + manager.add_commadd("db",MigrateCommand) + if __ name __ ==‘__ main__‘ + manager.run()
-
-
Flask-Migrate常用命令
-
1.初始化一个环境:python manager.py db init
-
2.自动检测模型,生成迁移脚本 python manager.py db migrate
-
3.将迁移脚本映射到数据库中 : python manager.py db upgrade
-
4.更多命令 python manager.py db --help
-
-
以上是关于Flask-Script&FLask-Migrate的主要内容,如果未能解决你的问题,请参考以下文章