Python学习笔记-第15天:实战练习(2)

第十五天 实战练习(2)

今天计划用Python继续一个web开发的实战项目练习,学习项目及练习源码地址:
GitHub源码

编写数据库orm和驱动封装

在这个Web App中,所有数据,包括用户信息、发布的日志、评论等,都存储在MySQL数据库中

Web App里面有很多地方都要访问数据库。访问数据库需要创建数据库连接、游标对象,然后执行SQL语句,最后处理异常,清理资源。这些访问数据库的代码如果分散到各个函数中,势必无法维护,也不利于代码复用。

所以,我们要首先把常用的SELECT、INSERT、UPDATE和DELETE操作用函数封装起来。

由于Web框架使用了基于asyncio的aiohttp,这是基于协程的异步模型。在协程中,不能调用普通的同步IO操作,因为所有用户都是由一个线程服务的,协程的执行速度必须非常快,才能处理大量用户的请求。而耗时的IO操作不能在协程中以同步的方式调用,否则,等待一个IO操作时,系统无法响应任何其他用户。

这就是异步编程的一个原则:一旦决定使用异步,则系统每一层都必须是异步,“开弓没有回头箭”。

幸运的是aiomysql为MySQL数据库提供了异步IO的驱动。

根据orm编写数据库model

编写Web框架

aiohttp已经是一个Web框架了,为什么我们还需要自己封装一个?

原因是从使用者的角度来说,aiohttp相对比较底层还需要继续封装。

你可能感兴趣的:(Python学习笔记-第15天:实战练习(2))