加上這幾個元件,flask搖身一變是django

2022-07-15 01:12:13 字數 3350 閱讀 6327

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):

#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

五、建立model

#by gaoxin

from 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

from flask_demo.models import *

# 一定要匯入models 否則找不到表建立不出來

db.create_all()

#db.drop_all()

七、基於orm對資料庫操作

#by gaoxin

from 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 gaoxin

from 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 gaoxin

from 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,但...