python四种web框架总结以及MySQL优化

一、总结一下四种常用的web框架:Django,Flask,Tornado,Bottle

1.MVC:

总结框架之前首先总结一下什么是MVC:

MVC是一种软件设计典范,是一种将业务逻辑,数据操作,界面展示相分离的设计典范,M:model是模型,他主要用来封装我们对数据的操作,V:view是视图,主要是界面的展示,C:controller是控制器,是MVC中的核心,他主要用来接收用户的请求,来处理用户的请求,进行业务逻辑的处理,它连接了model和view。MVC的核心思想是解耦合,将代码拆分开,不用牵一发而动全身。

2.Django:

Django的设计模式是MTV,其实就是MVC的一个变种,Django是基于python的重量级web框架,因为他除了核心模板引擎以外,还提供了很多包,例如后台管理工具admin,静态资源Django storages和Django Pipline ,还有djangorestframework来实现REST等等,它对于数据库的操作是自身的ORM模型(Object Relational Map)对象关系映射,创建模型之后的迁移命令是 python manage.py makemigrations(生成迁移文件)和 python manage.py migrate(将模型迁移到数据库中),ORM默认连接Sqllite(轻量级的关系型数据库),可以自己配置成MySQL。

Django的请求生命周期:客户端发起请求 > nginx > uwsgi > 请求中间件 > url路由 > view视图 > ORM获取数据 >  view视图 > 模板渲染 > 服务器返回响应  > uwsgi > nginx > 客户端显示

3.Flask:

Flask是基于python的一个轻量级web框架,他的设计模式是MVC风格,他的设计是借鉴Django,Flask的两个核心组件:Jinja2是一个现代的,设计师友好的Python模板引擎,模仿Django的模板。使用可选的沙盒模板执行环境,它具有快速,广泛使用和安全性,Werkzeug不是一个框架,它是一个带有实用程序的库,可以创建自己的框架或应用程序,因此非常灵活。

四大内置对象:request 请求对象,封装了客户端发送的HTTP请求的内容; session 用户会话,用来记住请求; g变量 :充当者中间媒介的作用,我们可以通过它传递一些数据; current_app代表当前的flask程序实例,使用时需要flask的程序上下文激活

4.Tornado:

是一种基于python的 Web 框架,它的设计模式也是MVC,Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。

web框架的本质就是socket服务端再加上业务逻辑处理,而torando就是这样的框架,而Django,Flask,bottle不同于Torando,他们只包含了业务逻辑处理,他们的使用需要包含socket的第三方模块(即wsgiref)来运行。

Tornado中支持两种路由系统,正则路由系统以及二级域名路由系统,在Torando中,默认执行Handler的get/post等方法之前默认会执行initialize方法,所以可以通过自定义对的方式使得所有请求在处理前执行操作,initialize就是钩子函数。

5.bottle:

Bottle是一个简单高效的遵循WSGI的微型python Web框架。说微型,是因为它只有一个文件,除Python标准库外,它不依赖于任何第三方模块。

特性:

Routing:把请求映射到函数,建立简洁动态的URLs

Templates:采用内置模板引擎,同时还支持 mako, jinja2, cheetah 等第三方模板

Utilities:便捷地读取表单数据、上传文件、 cookies、HTTP头信息和其它 HTTP相关的元数据

Server:内置HTTP开发服务器,并且支持 paste, fapws3, bjoern, Google App Engine, Cherrypy 或者其它任何WSGI HTTP 服务器

简单介绍几种类和接口:

bottle.Bottle:  代表一个独立的wsgi应用,由以下部分组成:routes, callbacks, plugins, resources and configuration。

bottle.Route:  封装了路由规则与对应的回调

ServerAdapter:所有bottle适配的web服务器的基类,子类只要实现run方法就可以了

bottle.run

    启动wsgi服务器。几个比较重要的参数

    app: wsgi application,即可以是bottle.Bottle 也开始是任何满足wsgi 接口的函数

    server: wsgi http server,字符串

    host:port: 监听端口

核心逻辑:     ServerAdapter.run(app)。

MySQL的优化:(MySQL的索引是用B+ Tree来实现的)

1.合理设计表的结构

2.定义字段时能用varchar尽量不用char

3.利用数据库的索引进行优化,类似查字典,先查索引,再根据索引来查表

4.数据库的读写分离,一:分析表的属性,将写入频繁的表与读取频繁的表分开来放。

二:主从同步,读写分离:设置主表Master和从表Slave,主表负责写入数据,写入数据后同步到从表,从表负责读取数据,以上两种方法实现读写分离

5.数据库的分表分区:分区就是把一个数据表的文件和索引分散存储在不同的物理文件中。

分表和分区类似,区别是,分区是把一个逻辑表文件分成几个物理文件后进行存储,而分表则是把原先的一个表分成几个表。进行分表查询时可以通过union或者视图。分表又分垂直分割和水平分割,其中水平分分割最为常用。水平分割通常是指切分到另外一个数据库或表中。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容