PooledDB

[python] view plaincopyprint?

#-*- coding: utf-8 -*-  
"""
数据库管理类
"""  
import MySQLdb  
from DBUtils.PooledDB import PooledDB  
#自定义的配置文件,主要包含DB的一些基本配置  
from config import configs  
 
#数据库实例化类  
class DbManager(Singleton):  
 
    def __init__(self):  
        connKwargs = {'host':configs['DB_HOST'], 'user':configs['DB_USER'], 'passwd':configs['DB_PASS'], 'db':configs['DB_NAME'], 'charset':"utf8"}  
        self._pool = PooledDB(MySQLdb, mincached=0, maxcached=10, maxshared=10, maxusage=10000, **connKwargs)  
 
    def getConn(self):  
        return self._pool.connection()  
 
_dbManager = DbManager()  
 
def getConn():  
    """ 获取数据库连接 """  
    return _dbManager.getConn()  
 
def executeAndGetId(sql, param=None):  
    """ 执行插入语句并获取自增id """  
    conn = getConn()  
    cursor = conn.cursor()  
    if param == None:  
        cursor.execute(sql)  
    else:  
        cursor.execute(sql, param)  
    id = cursor.lastrowid  
    cursor.close()  
    conn.close()  
 
    return id  
 
def execute(sql, param=None):  
    """ 执行sql语句 """  
    conn = getConn()  
    cursor = conn.cursor()  
    if param == None:  
        rowcount = cursor.execute(sql)  
    else:  
        rowcount = cursor.execute(sql, param)  
    cursor.close()  
    conn.close()  
 
    return rowcount  
 
def queryOne(sql):  
    """ 获取一条信息 """  
    conn = getConn()  
    cursor = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)  
    rowcount = cursor.execute(sql)  
    if rowcount > 0:  
        res = cursor.fetchone()  
    else:  
        res = None  
    cursor.close()  
    conn.close()  
 
    return res  
 
def queryAll(sql):  
    """ 获取所有信息 """  
    conn = getConn()  
    cursor = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)  
    rowcount = cursor.execute(sql)  
    if rowcount > 0:  
        res = cursor.fetchall()  
    else:  
        res = None  
    cursor.close()  
    conn.close()  
 
    return res  
 
if __name__ == "__main__":  
    res = execute('select count(*) from myt_link_list')  
    print str(res)  
 
    res = queryOne('select * from myt_link_list limit 20000, 1')  
    print str(res)  
 
    res = queryAll('select * from myt_link_list limit 10')  
    print str(res) 

你可能感兴趣的:(PooledDB)