打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
UC头条:Python 为什么要使用数据库连接池, MySQL PooledDB 简单使用

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

一、连接池

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

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

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

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

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

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 实例成功后属性如下

看看对应的connection

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

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

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

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

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

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

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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python数据库连接池相关示例详细介绍
ibatis数据库连接报错No operations allowed after connection closed.Connection was implicitly closed
高并发场景下必备利器:掌握连接池的使用和调优技巧
Python中读取MySQL数据库中的数据,如何把数据写入到数据库
UC头条:10句很经典的励志短句, 游手好闲的人, 最没有空闲
UC头条:如何学习python|22、列表生成式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服