python mysql pooleddb_Python 为什么要使用数据库连接池, MySQL PooledDB 简单使用

我们先来了解一下什么是连接池,池的概念

一、连接池

其实池的概念很好理解,顾名思义,池就是一个池塘,里面放了很多条已经创建好了的连接,这几条连接是有寿命的,在这几条连接池存活的时候,你可以随意使用其中的任意一条,在使用完之后,也不会关闭这条连接,而是会继续放到池中,供下一次调用使用。

池里面的连接数在创建池的时候已经定义好了的,假设为N个连接数。所以如果一旦有多于这个连接数的调用,则第N+1 开始会等待前面的调用完释放连接到连接池才会继续调用。

注意,这里的池是放在内存里的,所以也不是连接数越多越好,白白浪费了资源。太小则起不到池的概念。

有的同学会问,那我想用的时候再创建一条不可以吗,用完就直接回收掉。这样不是更加方便吗?

0244a008fd5633910593e764b893d48e.png

好问题,所以连接池的有啥好的?

1、数据库 本身有压力,并不能创建太多的并发数访问数据库,如果是大表那更加会有压力,因此限制一定的连接是更加科学的方法。

2、创建和释放数据库连接是一个很耗时的操作,频繁地进行这样的操作将占用大量的性能开销,进而响应速度下降,严重的时候可能导致服务器崩溃,数据库连接池可以节省系统许多开销。

综上所述,可以使用连接池当然最好是使用连接池了。

下面看看怎么实际使用连接池。

二、PooledDB 简单使用

import MySQLdb

from DBUtils.PooledDB import PooledDB

# 实例化

center_pool = PooledDB(creator=MySQLdb, maxcached=10,

host=your_host,

port=your_port,

user=your_user,

passwd=your_pass,

db=your_db,

use_unicode=False,

charset='utf8')

connection = center_pool.connection()

creator 表示使用的数据库是什么类型的数据库,这里我使用的是MySQL

mincached,最少的空闲连接数,如果空闲连接数小于这个数,pool会创建一个新的连接

maxcached,最大的空闲连接数,如果空闲连接数大于这个数,pool会关闭空闲连接

maxconnections,最大的连接数,

blocking,当连接数达到最大的连接数时,在请求连接的时候,如果这个值是True,请求连接的程序会一直等待,直到当前连接数小于最大连接数,如果这个值是False,会报错,

maxshared 当连接数达到这个数,新请求的连接会分享已经分配出去的连接

use_unicode 这个参数在python2,python3可能设置的不大一样,可以去尝试尝试。这里使用的环境是python2。

center_pool 实例成功后属性如下

c34ab6c50f66b8835f5ace14de6e928b.png

看看对应的connection

69a4b63166ffe0d8cc2c0dd513a72b98.png

可以看到实例化连接后有两个属性,一个是连接的_con 一个是这个连接所属的连接池 _pool 属性。

1affcfec4591d1638cbc2e88f0758c3e.png

可以看到是跟上面center_pool是一样的。也就是这个连接是属于连接池中的某一条连接。

如果设置了最大连接数,一旦超过最大连接数时就会报错

92e89ace3c2bd0ea8b121518c7d784cb.png

这是因为设置了blocking = False,如果设置为True就会一直等待有连接释放后获得。

以上就是蚂蚁今天跟大家分享我遇到的问题,以及解决的方法。

我是一只前进的蚂蚁,希望能一起前行。

如果对您有一点帮助,一个赞就够了,感谢!

注:如果本篇博客有任何错误和建议,欢迎各位指出,不胜感激!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值