python 数据库连接池可以使用DBUtils模块。
示例程序:
#!/usr/bin/env python # encoding:utf8 import sys reload(sys) sys.setdefaultencoding("utf-8") import time import MySQLdb from DBUtils.PooledDB import PooledDB import lsconst SLEEP_FOR_NEXT_TRY = 3 class DBTools: def __init__(self, host, user, passwd, db): self.host = host self.user = user self.passwd = passwd self.db = db self.conn = None def connect(self): if self.conn: return while True: try: self.conn = PooledDB(MySQLdb, maxusage=10, db=self.db, host=self.host, user=self.user, passwd=self.passwd, charset='utf8') break except Exception, e: print lsconst.BRO, 'DBTools.connect', e, lsconst.NOR print 'Sleep %d seconds for next try.' % SLEEP_FOR_NEXT_TRY time.sleep(SLEEP_FOR_NEXT_TRY) def disconnect(self): if not self.conn: return try: #PooledDB instance has no attribute 'commit' #self.conn.commit() self.conn.close() self.conn = None except Exception, e: print lsconst.BRO, e, lsconst.NOR def operateDB(self, type, *sqls): if not self.conn: self.connect() try: pool = self.conn.connection() cur = pool.cursor() result = [] if type == 'select': if cur.execute(sqls[0]) > 0: #print sqls[0] result = cur.fetchall() pool.close() return result else: for sql in sqls: #print sql cur.execute(sql) pool.close() return True except Exception, e: print lsconst.RED, e, lsconst.NOR print print lsconst.RED, sqls, lsconst.NOR #self.disconnect()
参考:
http://blog.csdn.net/gashero/article/details/1577187
原文:http://www.cnblogs.com/congbo/archive/2012/08/27/2658518.html