环境Python3.6下 使用DBUtils库实现MySQL的数据库连接池应用
参考文章:
http://blog.csdn.net/zbc1090549839/article/details/51336458
https://blog.csdn.net/daerzei/article/details/83865325
数据库连接池
先来看 连接池 的概念,引自百度百科:
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
我们为什么要使用 数据库连接池?
我们在进行数据库的连接及诸如查询/插入/更新等操作时,每次连接mysql数据库都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响,从而导致资源泄露等问题。
因此,在实际使用中通常会用数据库的连接池技术,来访问数据库达到资源复用的目的。
数据库连接池的工作流程:
-
应用启动时,根据配置的最小连接数,在连接池将创建此数目的数据库连接放到池中。
-
应用访问时,首先查看连接池中是否有空闲连接,如果存在空闲连接,则将连接分配给客户使用;如果没有空闲连接,则查看当前所开的连接数是否已经达到最大连接数,如果没达到就重新创建一个连接给请求的客户;如果达到就按设定的最大等待时间进行等待,如果超出最大等待时间,则抛出异常给客户。 当客户释放数据库连接时,先判断该连接的引用次数是否超过了规定值,如果超过就从连接池中删除该连接,否则保留等待再次使用。
-
应用关闭时,关闭池中所有连接,释放所有资源。
常用连接池的模块 DBUtils
安装 DBUtils:
pip install DBUtils
我们用PyMySQL包作为连接MySQL的驱动,因此也要安装PyMySQL:
pip install PyMySQL
DBUtils是一套Pytho