flask+script命令行交互工具
Project name :Flask_Plan
templates:templates
static:static
首先说,我们flask比django方便的地方是所有的模块都可以自己选,你不喜欢sqlalchemy这个orm,你可以换一个,别问我,我也不会,学的就是sqlalchemy。
django提供了一个数据库设升级工具migrate,我们也需要啊,否则后期增加功能,数据库就头痛死。
好吧,我们也给flask加上这样的功能。
恐怕还是老实用sqlalchemy吧,flask_sqlalchemy少了一些数据库的高级功能,比如说or_
sqlalchemy和flask_sqlalchemy能否混用,还不清楚。先用sqlalchemy吧。原版的。
我不准备再写sqlalchemy的文章了。
直接写flask_sqlalchemy吧,同时配合flask_migrate,配合flask_script
安装也很简单。
创建Flask_Plan/manage.py
from flask_script import Manager from Flask_Plan import app manager = Manager(app) @manager.command def runserver(): print('hello') if __name__ == '__main__': manager.run()
直接运行这个文件
usage: managy.py [-?] {runserver,shell} ...
提示到了你需要使用 managy.py runserver 来运行。
那么我们就在该目录下 运行
python managy.py runserver
会输出我们的hello
我是用的虚拟环境的python
命令如下图
但是我们用的是pycharm,还老进这命令行干吗?
参考以下配置:
File--Settings--tools--External Tools
用右边的加号自己创建一个新的。
Name是你会在菜单里看到的。
Program:是python的位置,这个是我的虚拟环境中python的位置。
Parameters:就是可选的命令参数了。
高级用法:如果命令多了,怎么写?都写这一个文件,找起来累死了。
把一类命令放进一个script文件
创建Flask_Plan/db_script.py
from flask_script import Manager DBmanager = Manager() @DBmanager.command def init(): print('数据库初始化') @DBmanager.command def migrate(): print('数据库比较') @DBmanager.command def update(): print('数据库升级')
编辑Flask_Plan/manage.py
from flask_script import Manager #引入script的manager from Flask_Plan import app #引入启动文件的app(实例化的FLASK) from db_script import DBmanager #引入DB类的命令文件 manager = Manager(app) #实例化manager @manager.command #用装饰器表明下面的函数是个manager命令 def runserver(): #函数名称就是manager命令的参数 print('hello') manager.add_command('db',DBmanager) #把引入的DB命令,加入manager中 if __name__ == '__main__': manager.run()
引入了DB类的命令文件
把命令都加入了manager
直接运行一下managy.py
提示信息:
usage: managy.py [-?] {runserver,db,shell} ... positional arguments: {runserver,-db,shell} runserver -db
看到提示-db了么?这就是我们把命令加入manager时候用的前缀,开始有点像dos命令了。
运行命令是这样的:
貌似我们已经实现了django中
makemigrations
migrate
两个命令。
配置进pycharm
File--Settings--tools--External Tools
后面讲migrate的时候会用到。