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连接池实现完了,你可以根据自己的需要进行使用。