您现在的位置是:网站首页> 内容页

Flask script 内的Shell 类 使用

  • 710网站官方下载
  • 2019-06-14
  • 119人已阅读
简介1.集成Pythonshell每次自动shell会话都要导入数据库实例和模型,很烦人。为了避免一直重复导入,我们可以做些配置让Flask-Script的Shell命令自动导入特定的对

1.集成Python shell

每次自动shell会话都要导入数据库实例和模型,很烦人。为了避免一直重复导入,我们可以做些配置让Flask-Script的Shell命令自动导入特定的对象若想把对象添加到导入列表中,我们要为shell命令注册一个make_context回调函数

 

例子:hello.py: 为shell命令添加一个上下文

from flask_script import Shelldef make_ shell context():  return dict(app=app db=db User=User Role=Role)

manager.add_command("shell" Shell(make_context=make_shell_context))

 

可能错误提示:

TypeError: <flask_script.commands.Shell object at 0x000000000478E908>: "dict" object is not callable

是因为多写了括号,让定义的 make_ shell context 函数直接执行了

manager.add_command("shell" Shell(make_context=make_shell_context()))

 

继续:make_shell _context() 函数注册了程序、数据库实例以及模型,因此这些对象能直接导入shell:

$ python hello.py shell>>> app<Flask "app">>>> db<SQLAlchemy engine="sqlite:////home/flask/flasky/data.sqlite">>>> User<class "appUser">

 

 

2.补充

(1)shell作用

 shell 是个好东西,在平时需要手动做一些应用的操作的时候,Flask 的 Shell 简直是神助攻,尤其是当需要查找一个 Model 的数据的时候更爽了。

Flask-Script 的 Shell 其实就是一个加载了 Flask 应用上下文的交互式环境,通过 shell, 我们可以像启动应用一样操作动态数据。

简单说:方便自己调试!

 

(2)make_context作用:

在启动的 shell 中添加默认的变量,例如上面添加了 db、User 这些,也就是说在启动 shell 之后就可以直接像访问默认函数/变量一样直接用,不用自己导入对象。

比如可以直接查询数据库:

db.User.query.all()

如果不加这个 make_context 参数的话,还得麻烦的自己导入:

from application.app import dbdb.User.query.all()

简单说:不用自己导入对象(如数据库模型等)!

 

文章评论

Top