采用连接池的方式来操作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()

python连接池框架_python pymysql 连接池相关推荐

  1. python连接池框架_Python中的连接池是非常重要的!神级程序员详解!

    概述 连接池的作用就是为了提高性能,将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对Server端进行访问.这样 省略了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁 ...

  2. python并行计算进程池通信_Python使用进程池管理进程和进程间通信

    与线程池类似的是,如果程序需要启动多个进程,也可以使用进程池来管理进程.程序可以通过 multiprocessing 模块的 Pool() 函数创建进程池,进程池实际上是 multiprocessin ...

  3. python 线程池回收_python实现线程池

    这段时间一直在做一个爬虫系统,用python和django实现.其中涉及到了多线程的问题,在后端使用一个全局的字典用来保存和识别已经运行的线程.但是觉得这样的实现不是不太舒服.于是想找到一个更好的实现 ...

  4. python处理teradata数据库_Python脚本连接Teradata数据库

    Connect Teradata from python Base on Linux Ubuntu with python2.7 参考网络搜索结果,具体出处不记得了,结合自身实践总结.以下操作为Lin ...

  5. python通过ip池爬_Python爬虫 | IP池的使用

    一.简介 爬虫中为什么需要使用代理 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会禁止这个IP的访问.所以我们需要设 ...

  6. python api测试框架_python api 测试框架

    python常用框架 Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是 ...

  7. python做性能测试框架_python api 测试框架

    python常用框架 Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是 ...

  8. python十大框架_python 十大web框架排名总结

    0 引言 python在web开发方面有着广泛的应用.鉴于各种各样的框架,对于开发者来说如何选择将成为一个问题.为此,我特此对比较常见的几种框架从性能.使用感受以及应用情况进行一个粗略的分析. 1 D ...

  9. python django restful框架_python+django+rest框架配置创建方法

    安装好所需要的插件和包: python.django.pip等版本如下: 采用Django REST框架3.0 1.在python文件夹下D:\python\Lib\site-packages\dja ...

最新文章

  1. 腾讯裁撤中层干部,拥抱年轻人
  2. 擦除:提升 CNN 特征可视化的 3 种重要手段
  3. 查看电脑python虚拟环境-手把手教你在Linux系统下使用Python虚拟环境
  4. 终于有人讲透了芯片是什么(电子行业人士必读)
  5. a[1]和1[a]——浅谈数组下标运算符
  6. 印前处理的“发动机”——RIP
  7. 退出智能手机业务后 LG电子仍将提供最多三年操作系统升级
  8. 语音识别哪家强?百度 、苹果、科大讯飞都有制胜法宝
  9. 170819-关于JSTL的知识点
  10. python贪吃蛇代码
  11. 抖音-相关分析和理解
  12. sparksql 与flinksql 建表 与 连表记录
  13. 深度估计 双目深度估计+单目深度估计 ONNX运行程序
  14. ps cs6如何破解
  15. SoC设计与验证流程
  16. 常见数据类型的散列函数
  17. 发言稿开场白范文_演讲稿开场白范文集锦
  18. c语言表达式用法,C语言 运算符、表达式和条件结构 用法总结
  19. 停车场自动计费系统 c语言,数据结构用c语言实现停车场管理完整系统.doc
  20. 编写自己的驱动过游戏保护-需要具备的理论知识

热门文章

  1. jsp 选择时分秒控件_【最全】9月计算机考试报名通知(6.19更新,仅差4省市)附:分析如何选择科目...
  2. linux搭建windows无盘系统,PXE+HTTP 无盘安装linux系统
  3. c++ 不允许使用不完整的类型_Python入门高级教程--Python?变量类型
  4. python json解析方法_Python 中的 JSON 方式讲解
  5. arcgis设置nodata值_新版白话空间统计(6):在ArcGIS中实现莫兰指数计算
  6. Token 认证的来龙去脉,DRF认证,DRF权限,DRF限制
  7. Day5:面向对象的定义(中)
  8. AndroidOS体系结构
  9. C++ Primer 第十六章 模板与范型编程
  10. 我设计的简单事务控制