flask和django作為python中的兩大開源框架,各分春秋,各有各自的優點,不能一概而論說哪個好哪個不好。flask框架小而精,適用於快速開發一些小的應用的專案。django大而全,內建了各種元件,包含各個方面,適用於開發一些複雜的專案。
flask由於自身的擴充套件性,導致社群有各種各樣功能的小外掛程式,將這些外掛程式拼起來就是乙個django的專案框架。
用過django的orm和python原生的sqlalchemy框架的小夥伴們,肯定會有這樣的感觸,django的orm真好用,使用特別遍歷。而sqlalchemy使用起來好麻煩。flask中也有自己的元件,flask-sqlalchemy作為flask與sqlalchemy的粘合劑,將兩者結合起來,使得sqlalchemy使用更便捷。
pip3 install flask-sqlalchemy二、匯入並例項化sqlalchemy
#在跟專案同名的資料夾下的 init.py中三、初始化from flask_sqlalchemy importsqlalchemy
db =sqlalchemy()
from .views.user importus
#!!! 注意事項#必須在匯入藍圖之前
#flask-session 第一步例項化session
#初始化db
四、在配置檔案寫入配置資訊
classbaseconfig(object):五、建立model#flask-session 第二步
#session_type = 'redis'
#session_redis = redis(host='192.168.0.94', port='6379')
sqlalchemy_database_uri = "mysql+pymysql:"sqlalchemy_pool_size = 10sqlalchemy_max_overflow = 5
#sqlalchemy_track_modifications = false
pass
#by gaoxinfrom sqlalchemy importcolumn, integer, string
from flask_demo importdb
classusers(db.model):
__tablename__ = 'users'id = column(integer, primary_key=true)
name = column(string(32), index=true, nullable=false)
#by gaoxin七、基於orm對資料庫操作from flask_demo.models import *
# 一定要匯入models 否則找不到表建立不出來
db.create_all()
#db.drop_all()
#by gaoxinfrom flask importblueprint
from flask_demo importdb
from flask_demo.models importusers
us = blueprint("us", __name__)
@us.route("/index")
defindex():
#db.session.add(users(name="gaoxin"))
#db.session.commit()
#db.session.remove()
ret =db.session.query(users).all()
print(ret)
db.session.remove()
return "index"
pip3 install flask-script二、增加的功能 runserver
#by gaoxin三、自定義命令from flask_script importmanager
if __name__ == '__main__':
manager.run()
#啟動命令變成#python3 manager.py runserver -h 127.0.0.1 -p 8000#running on (press ctrl+c to quit)
#by gaoxinfrom flask_script importmanager
#位置傳參
@manager.command
defcustom(arg):
"""自定義命令
python manage.py custom 123
:param arg:
:return:
"""print(arg)
#關鍵字傳參
@manager.option('-n', '--name', dest='name')
@manager.option('-u', '--url', dest='url')
defcmd(name, url):
"""自定義命令
執行: python manage.py cmd -n wupeiqi -u
:param name:
:param url:
:return:
"""print(name, url)
if __name__ == '__main__':
manager.run()
pip3 install flask-migrate二、增加的命令
!!!! 依賴flask-script !!!!
#by gaoxinfrom flask_demo.models import *
from flask_script importmanager
from flask_migrate importmigrate, migratecommand
"""# 資料庫遷移命名
# 依賴 flask-script
python manage.py db init # 初始化
python manage.py db migrate # makemigrations
python manage.py db upgrade # migrate
"""manager.add_command("db", migratecommand)
if __name__ == '__main__':
manager.run()
Flask 基礎元件(一) 基本使用
flask是乙個基於python開發並且依賴jinja2模板和werkzeug wsgi服務的乙個微型框架,對於werkzeug本質是socket服務端,其用於接收http請求並對請求進行預處理,然後觸發flask框架,開發人員基於flask框架提供的功能對請求進行相應的處理,並返回給使用者,如果要...
扒一扒Profiler中這幾個「佔坑鬼」
waitfortargetfps gfx.waitforpresent 和 graphics.presentandsync是我們經常會被問到的引數。想必正在讀此文的你也經常在profiler中遇到過這幾項cpu開銷過大的情況。對此,我們今天就來好好地聊一聊這幾個引數的具體含義和觸發規則。解析 該項在...
扒一扒Profiler中這幾個「佔坑鬼」
解析 該項在unity引擎的主迴圈中其實是最早執行的,即引擎實際上是根據上一幀的cpu耗時,在當前幀中通過增補waitfortargetfps的方式來將執行fps維持到目標值。比如,目標幀率為30幀 秒,上一幀耗時15ms,那麼當前幀中waitfortargetfps將會是18 33 15 ms,但...