python四種web框架總結(jié)以及MySQL優(yōu)化

一、總結(jié)一下四種常用的web框架:Django侮措,F(xiàn)lask懈叹,Tornado,Bottle

1.MVC:

總結(jié)框架之前首先總結(jié)一下什么是MVC:

MVC是一種軟件設(shè)計(jì)典范分扎,是一種將業(yè)務(wù)邏輯澄成,數(shù)據(jù)操作,界面展示相分離的設(shè)計(jì)典范,M:model是模型墨状,他主要用來(lái)封裝我們對(duì)數(shù)據(jù)的操作卫漫,V:view是視圖,主要是界面的展示肾砂,C:controller是控制器列赎,是MVC中的核心,他主要用來(lái)接收用戶的請(qǐng)求镐确,來(lái)處理用戶的請(qǐng)求粥谬,進(jìn)行業(yè)務(wù)邏輯的處理,它連接了model和view辫塌。MVC的核心思想是解耦合漏策,將代碼拆分開(kāi),不用牽一發(fā)而動(dòng)全身臼氨。

2.Django:

Django的設(shè)計(jì)模式是MTV掺喻,其實(shí)就是MVC的一個(gè)變種,Django是基于python的重量級(jí)web框架储矩,因?yàn)樗撕诵哪0逡嬉酝飧邪遥€提供了很多包,例如后臺(tái)管理工具admin持隧,靜態(tài)資源Django storages和Django Pipline 即硼,還有djangorestframework來(lái)實(shí)現(xiàn)REST等等,它對(duì)于數(shù)據(jù)庫(kù)的操作是自身的ORM模型(Object Relational Map)對(duì)象關(guān)系映射屡拨,創(chuàng)建模型之后的遷移命令是 python manage.py makemigrations(生成遷移文件)和 python manage.py migrate(將模型遷移到數(shù)據(jù)庫(kù)中)只酥,ORM默認(rèn)連接Sqllite(輕量級(jí)的關(guān)系型數(shù)據(jù)庫(kù)),可以自己配置成MySQL呀狼。

Django的請(qǐng)求生命周期:客戶端發(fā)起請(qǐng)求 > nginx > uwsgi > 請(qǐng)求中間件 > url路由 > view視圖 > ORM獲取數(shù)據(jù) >? view視圖 > 模板渲染 > 服務(wù)器返回響應(yīng)? > uwsgi > nginx > 客戶端顯示

3.Flask:

Flask是基于python的一個(gè)輕量級(jí)web框架裂允,他的設(shè)計(jì)模式是MVC風(fēng)格,他的設(shè)計(jì)是借鑒Django哥艇,F(xiàn)lask的兩個(gè)核心組件:Jinja2是一個(gè)現(xiàn)代的绝编,設(shè)計(jì)師友好的Python模板引擎,模仿Django的模板貌踏。使用可選的沙盒模板執(zhí)行環(huán)境十饥,它具有快速,廣泛使用和安全性祖乳,Werkzeug不是一個(gè)框架逗堵,它是一個(gè)帶有實(shí)用程序的庫(kù),可以創(chuàng)建自己的框架或應(yīng)用程序凡资,因此非常靈活砸捏。

四大內(nèi)置對(duì)象:request 請(qǐng)求對(duì)象,封裝了客戶端發(fā)送的HTTP請(qǐng)求的內(nèi)容; session 用戶會(huì)話,用來(lái)記住請(qǐng)求隙赁; g變量 :充當(dāng)者中間媒介的作用,我們可以通過(guò)它傳遞一些數(shù)據(jù)垦藏; current_app代表當(dāng)前的flask程序?qū)嵗?使用時(shí)需要flask的程序上下文激活

4.Tornado:

是一種基于python的 Web 框架,它的設(shè)計(jì)模式也是MVC伞访,Tornado 和現(xiàn)在的主流 Web 服務(wù)器框架(包括大多數(shù) Python 的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器掂骏,而且速度相當(dāng)快。得利于其非阻塞的方式和對(duì)epoll的運(yùn)用厚掷,Tornado 每秒可以處理數(shù)以千計(jì)的連接弟灼,因此 Tornado 是實(shí)時(shí) Web 服務(wù)的一個(gè) 理想框架。

web框架的本質(zhì)就是socket服務(wù)端再加上業(yè)務(wù)邏輯處理冒黑,而torando就是這樣的框架田绑,而Django,F(xiàn)lask抡爹,bottle不同于Torando掩驱,他們只包含了業(yè)務(wù)邏輯處理,他們的使用需要包含socket的第三方模塊(即wsgiref)來(lái)運(yùn)行冬竟。

Tornado中支持兩種路由系統(tǒng)欧穴,正則路由系統(tǒng)以及二級(jí)域名路由系統(tǒng),在Torando中泵殴,默認(rèn)執(zhí)行Handler的get/post等方法之前默認(rèn)會(huì)執(zhí)行initialize方法涮帘,所以可以通過(guò)自定義對(duì)的方式使得所有請(qǐng)求在處理前執(zhí)行操作,initialize就是鉤子函數(shù)笑诅。

5.bottle:

Bottle是一個(gè)簡(jiǎn)單高效的遵循WSGI的微型python Web框架调缨。說(shuō)微型,是因?yàn)樗挥幸粋€(gè)文件吆你,除Python標(biāo)準(zhǔn)庫(kù)外同蜻,它不依賴于任何第三方模塊。

特性:

Routing:把請(qǐng)求映射到函數(shù)早处,建立簡(jiǎn)潔動(dòng)態(tài)的URLs

Templates:采用內(nèi)置模板引擎湾蔓,同時(shí)還支持 mako, jinja2, cheetah 等第三方模板

Utilities:便捷地讀取表單數(shù)據(jù)、上傳文件砌梆、 cookies默责、HTTP頭信息和其它 HTTP相關(guān)的元數(shù)據(jù)

Server:內(nèi)置HTTP開(kāi)發(fā)服務(wù)器,并且支持 paste, fapws3, bjoern, Google App Engine, Cherrypy 或者其它任何WSGI HTTP 服務(wù)器

簡(jiǎn)單介紹幾種類和接口:

bottle.Bottle:? 代表一個(gè)獨(dú)立的wsgi應(yīng)用咸包,由以下部分組成:routes,?callbacks,?plugins,?resources?and?configuration桃序。

bottle.Route:? 封裝了路由規(guī)則與對(duì)應(yīng)的回調(diào)

ServerAdapter:所有bottle適配的web服務(wù)器的基類,子類只要實(shí)現(xiàn)run方法就可以了

bottle.run

? ? 啟動(dòng)wsgi服務(wù)器烂瘫。幾個(gè)比較重要的參數(shù)

? ? app: wsgi application媒熊,即可以是bottle.Bottle 也開(kāi)始是任何滿足wsgi 接口的函數(shù)

? ? server: wsgi http server奇适,字符串

? ? host:port: 監(jiān)聽(tīng)端口

核心邏輯:???? ServerAdapter.run(app)。

MySQL的優(yōu)化:(MySQL的索引是用B+ Tree來(lái)實(shí)現(xiàn)的)

1.合理設(shè)計(jì)表的結(jié)構(gòu)

2.定義字段時(shí)能用varchar盡量不用char

3.利用數(shù)據(jù)庫(kù)的索引進(jìn)行優(yōu)化芦鳍,類似查字典嚷往,先查索引,再根據(jù)索引來(lái)查表

4.數(shù)據(jù)庫(kù)的讀寫(xiě)分離柠衅,一:分析表的屬性皮仁,將寫(xiě)入頻繁的表與讀取頻繁的表分開(kāi)來(lái)放。

二:主從同步菲宴,讀寫(xiě)分離:設(shè)置主表Master和從表Slave贷祈,主表負(fù)責(zé)寫(xiě)入數(shù)據(jù),寫(xiě)入數(shù)據(jù)后同步到從表喝峦,從表負(fù)責(zé)讀取數(shù)據(jù)势誊,以上兩種方法實(shí)現(xiàn)讀寫(xiě)分離

5.數(shù)據(jù)庫(kù)的分表分區(qū):分區(qū)就是把一個(gè)數(shù)據(jù)表的文件和索引分散存儲(chǔ)在不同的物理文件中。

分表和分區(qū)類似谣蠢,區(qū)別是键科,分區(qū)是把一個(gè)邏輯表文件分成幾個(gè)物理文件后進(jìn)行存儲(chǔ),而分表則是把原先的一個(gè)表分成幾個(gè)表漩怎。進(jìn)行分表查詢時(shí)可以通過(guò)union或者視圖勋颖。分表又分垂直分割和水平分割,其中水平分分割最為常用勋锤。水平分割通常是指切分到另外一個(gè)數(shù)據(jù)庫(kù)或表中饭玲。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市叁执,隨后出現(xiàn)的幾起案子茄厘,更是在濱河造成了極大的恐慌,老刑警劉巖谈宛,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件次哈,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡吆录,警方通過(guò)查閱死者的電腦和手機(jī)窑滞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)恢筝,“玉大人哀卫,你說(shuō)我怎么就攤上這事∏瞬郏” “怎么了此改?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)侄柔。 經(jīng)常有香客問(wèn)我共啃,道長(zhǎng)占调,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任移剪,我火速辦了婚禮究珊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挂滓。我一直安慰自己苦银,他們只是感情好啸胧,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布赶站。 她就那樣靜靜地躺著,像睡著了一般纺念。 火紅的嫁衣襯著肌膚如雪贝椿。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,713評(píng)論 1 312
  • 那天陷谱,我揣著相機(jī)與錄音烙博,去河邊找鬼。 笑死烟逊,一個(gè)胖子當(dāng)著我的面吹牛渣窜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宪躯,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼乔宿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了访雪?” 一聲冷哼從身側(cè)響起详瑞,我...
    開(kāi)封第一講書(shū)人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎臣缀,沒(méi)想到半個(gè)月后坝橡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡精置,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年计寇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脂倦。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡饲常,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狼讨,到底是詐尸還是另有隱情贝淤,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布政供,位于F島的核電站播聪,受9級(jí)特大地震影響朽基,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜离陶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一稼虎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧招刨,春花似錦霎俩、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至谎倔,卻和暖如春柳击,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背片习。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工捌肴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人藕咏。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓状知,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親孽查。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饥悴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容