每次自動shell會話都要匯入資料庫例項和模型,很煩人。
為了避免一直重複匯入,
我們可以做些配置讓flask-script的shell命令自動匯入特定的物件。
若想把物件新增到匯入列表中,我們要為shell命令註冊乙個make_context**函式
例子:hello.py: 為shell命令新增乙個上下文
from flask_script importshell
defmake_ shell context():
manager.add_command('shell', shell(make_context=make_shell_context))
typeerror: : 'dict' ob是因為多寫了括號,讓定義的 make_ shell context 函式直接執行了ject is not callable
manager.add_command('shell', shell(make_context=make_shell_context()))繼續:
make_shell _context() 函式註冊了程式、資料庫例項以及模型,因此這些物件能直接匯入shell:
$ python hello.py shell''>
>>>db
'sqlite:////home/flask/flasky/data.sqlite
'>
>>>user
''>
shell 是個好東西,在平時需要手動做一些應用的操作的時候,flask 的 shell 簡直是神助攻,尤其是當需要查詢乙個 model 的資料的時候更爽了。
flask-script 的 shell 其實就是乙個載入了 flask 應用上下文的互動式環境,通過 shell, 我們可以像啟動應用一樣操作動態資料。
簡單說:方便自己除錯!
在啟動的 shell 中新增預設的變數,例如上面新增了 db、user 這些,也就是說在啟動 shell 之後就可以直接像訪問預設函式/變數一樣直接用,不用自己匯入物件。
比如可以直接查詢資料庫:
db.user.query.all()
如果不加這個make_context
引數的話,還得麻煩的自己匯入:
db.user.query.all()
簡單說:不用自己匯入物件(如資料庫模型等)!
flask與flask script的使用
一 安裝 pip install flask script二 簡單的使用 manage.py from flask script import manager from flask import flask manager.command def hello print hello def inde...
sh與bash的區別
在shell指令碼的開頭往往有一句話來定義使用哪種sh直譯器來解釋指令碼。目前研發送測的shell指令碼中主要有以下兩種方式 1 bin sh 2 bin bash 在這裡求教同福客棧的各位大俠們乙個問題 以上兩種方式有什麼區別?對於指令碼的實際執行會產生什麼不同的影響嗎?指令碼test.sh內容 ...
sh裡的變數 0 1
0就是該bash檔名 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。所有位置引數的內容 就是呼叫呼叫本bash shell的引數。基本上與上面相同。只不過是 返回的是乙個字串,字串中存在多外空格。返回多個字串。還有 返回所有位置引數的個數。執行當前sh檔案的pid touch var...