python连接池框架_python pymysql 连接池

采用连接池的方式来操作DB

#-*- coding:utf-8 -*-

#!/usr/bin/python3

import pymysql

import configUtil

from DBUtils.PooledDB import PooledDB

class MysqlUtil(object):

# 连接池对象

__pool = None

def __init__(self, config):

# 数据库构造函数,从连接池中取出连接,并生成操作游标

self.pool = MysqlUtil.__get_conn(config)

@staticmethod

def __get_conn(config):

"""

@summary: 静态方法,从连接池中取出连接

@return MySQLdb.connection

"""

host = configUtil.read_config(config, "datasource_url", "mysqlConfig")

username = configUtil.read_config(config, "datasource_username", "mysqlConfig")

db_pwd = configUtil.read_config(config, "datasource_password", "mysqlConfig")

db_database = configUtil.read_config(config, "datasource_database", "mysqlConfig")

if MysqlUtil.__pool is None:

__pool = PooledDB(pymysql, mincached=1, maxcached=10, maxconnections=10,

host=host, port=3306, user=username, passwd=db_pwd,

db=db_database, use_unicode=False, blocking=False, charset="utf8")

return __pool

def get_all(self, sql):

"""

@summary: 执行查询,并取出所有结果集

@param sql:查询SQL,如果有查询条件,请只指定条件列表,并将条件值使用参数[param]传递进来

@param param: 可选参数,条件列表值(元组/列表)

@return: result list(字典对象)/boolean 查询到的结果集

"""

try:

con = self.pool.connection()

cur = con.cursor()

count = cur.execute(sql)

if count > 0:

result = cur.fetchall()

else:

result = False

return result

except Exception as e:

print('SQL执行有误,原因:', e)

finally:

cur.close()

con.close()

def update(self, sql):

try:

con = self.pool.connection()

cur = con.cursor()

cur.execute(sql)

con.commit()

except Exception as e:

con.rollback() # 事务回滚

print('SQL执行有误,原因:', e)

finally:

cur.close()

con.close()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值