python 数据库连接池高并发问题,python的数据库连接池的实现

Rate this post

本章我们来学习关于python实现数据库连接的一些知识。

在python编程中常常需要使用MySQL进行数据库的连接,以及诸如查询/插入/更新等操作,但是每次连接mysql数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响。因此,实际使用中,通常会使用数据库的连接池技术,来访问数据库达到资源复用的目的。

一、Python的数据库连接池的包 DBUtils

ython的数据库连接池包 DBUtils:DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。DBUtils来自Webware for Python。

DBUtils提供两种外部接口:

1.PersistentDB :提供线程专用的数据库连接;

2. PooledDB :提供线程间可共享的数据库连接。

这两种方式都将自动管理连接。

接下来我们将在工程目录下新建package命名为:dbCon,并新建module命名为MySqlConn,下面是MySqlConn.py,该模块创建Mysql的连接池对象,并创建了如查询/插入等通用的操作方法。并且配置模块Cnofig,包括数据库的连接信息/用户名密码等:

DBHOST ="localhost"DBPORT = 3360

DBUSER = "root"

DBPWD = "root"

DBNAME = "test"

DBCHAR = "utf8"

并且我们会创建test模块,来测试一下使用连接池进行mysql访问

mysql = Mysql()

sqlAll = "SELECT id as uid, group_concat(tb.username) as username FROM users

print "get all"

for row in results :

print "%s\t%s"%(row["id"],row["username"])

sqlAll = "SELECT id as uid, group_concat(tb.username) as username FROM users

if results :

print "get many"

for row in result :

print "%s\t%s"%(row["uid"],row["username"])

results = mysql.getOne(sqlAll)

print "get one"

print "%s\t%s"%(results["uid"],results["username"])

#在这之后我们关闭数据库

mysql.dispose()

当然,还有很多其他参数可以配置:当然,还有很多其他参数可以配置。

1.dbapi :数据库接口;

2.mincached :启动时开启的空连接数量;

3.maxcached :连接池最大可用连接数量;

4.maxshared :连接池最大可共享连接数量;

5.maxconnections :最大允许连接数量;

6.blocking :达到最大数量时是否阻塞;

7.maxusage :单个连接最大复用次数。

根据自己的需要合理配置上述的资源参数,以满足自己的实际情况。到此为止,python中的mysql连接池实现完了,你可以根据自己的需要进行使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值