返回顶部
首页 > 资讯 > 后端开发 > Python >python DbUtils 使用教程
  • 621
分享到

python DbUtils 使用教程

教程pythonDbUtils 2023-01-31 07:01:28 621人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

下载:https://pypi.python.org/pypi/DBUtils/1.2先下载你要安装的包,并解压到磁盘下;进入到该文件的setup.py 目录下 ,打开cmd,并切换到该目录下;先执行 Python setup.py bu

下载:
https://pypi.python.org/pypi/DBUtils/1.2

先下载你要安装的包,并解压到磁盘下;
进入到该文件的setup.py 目录下 ,打开cmd,并切换到该目录下;
先执行 Python setup.py build
然后执行 python setup.py install


后面部分参考了:Https://blog.csdn.net/u010939285/article/details/71088145

DBUtils是一套Python数据库连接池包,并允许对非线程安全数据库接口进行线程安全包装。DBUtils来自WEBware for Python。

DBUtils提供两种外部接口: 
* PersistentDB :提供线程专用的数据库连接,并自动管理连接。 
* PooledDB :提供线程间可共享的数据库连接,并自动管理连接。 
需要库 
1、DBUtils pip install DBUtils 
2、pyMysql pip install pymysql/Mysqldb

MyDbUtils:

#-*- coding: UTF-8 -*-
import pymysql
from DBUtils.PooledDB import PooledDB
import DB_config as Config
import MySQLdb
'''
@功能:PT数据库连接池
'''
class PTConnectionPool(object):
    __pool = None;
    # def __init__(self):
    #     self.conn = self.__getConn();
    #     self.cursor = self.conn.cursor();
    def __enter__(self):
        self.conn = self.__getConn();
        self.cursor = self.conn.cursor();
        print u"PT数据库创建con和cursor";
        return self;

    def __getConn(self):
        if self.__pool is None:
            self.__pool = PooledDB(creator=MySQLdb, mincached=Config.DB_MIN_CACHED , maxcached=Config.DB_MAX_CACHED,
                               maxshared=Config.DB_MAX_SHARED, maxconnections=Config.DB_MAX_CONNECYIONS,
                               blocking=Config.DB_BLOCKING, maxusage=Config.DB_MAX_USAGE,
                               setsession=Config.DB_SET_SESSION,
                               host=Config.DB_TEST_HOST , port=Config.DB_TEST_PORT ,
                               user=Config.DB_TEST_USER , passwd=Config.DB_TEST_PASSWord ,
                               db=Config.DB_TEST_DBNAME , use_unicode=False, charset=Config.DB_CHARSET);
    return self.__pool.connection()
"""
@summary: 释放连接池资源
"""
def __exit__(self, type, value, trace):
    self.cursor.close()
    self.conn.close()
    print u"PT连接池释放con和cursor";

#重连接池中取出一个连接
def getconn(self):
    conn = self.__getConn();
    cursor = conn.cursor();
    return cursor,conn

#关闭连接归还给连接池
# def close(self):
#     self.cursor.close()
#     self.conn.close()
#     print u"PT连接池释放con和cursor";


def getPTConnection():
    return PTConnectionPool()

配置文件:DB_config.py

#-*- coding: UTF-8 -*-

#TEST数据库信息
DB_TEST_HOST="192.168.88.6";
DB_TEST_PORT=3306;
DB_TEST_DBNAME="asterisk";
DB_TEST_USER="root";
DB_TEST_PASSWORD="kalamodo";


#数据库连接编码
DB_CHARSET="utf8";

#mincached : 启动时开启的闲置连接数量(缺省值 0 开始时不创建连接)
DB_MIN_CACHED=10;

#maxcached : 连接池中允许的闲置的最多连接数量(缺省值 0 代表不闲置连接池大小)
DB_MAX_CACHED=10;

#maxshared : 共享连接数允许的最大数量(缺省值 0 代表所有连接都是专用的)如果达到了最大数量,被请求为共享的连接将会被共享使用
DB_MAX_SHARED=20;

#maxconnecyions : 创建连接池的最大数量(缺省值 0 代表不限制)
DB_MAX_CONNECYIONS=100;

#blocking : 设置在连接池达到最大数量时的行为(缺省值 0 或 False 代表返回一个错误<toMany......>; 其他代表阻塞直到连接数减少,连接被分配)
DB_BLOCKING=True;

#maxusage : 单个连接的最大允许复用次数(缺省值 0 或 False 代表不限制的复用).当达到最大数时,连接会自动重新连接(关闭和重新打开)
DB_MAX_USAGE=0;

#setsession : 一个可选的SQL命令列表用于准备每个会话,如["set datestyle to german", ...]
DB_SET_SESSION=None;

封装的mysqlhelp.py

import MySQLdb
from MyDbUtils import getPTConnection

class MysqlHelp(object):

mysql=None
def __init__(self):
    # self.connect()
    self.db=getPTConnection()
def __new__(cls, *args, **kwargs):
    if not hasattr(cls, 'inst'):
        cls.inst = super(MysqlHelp, cls).__new__(cls, *args, **kwargs)
    return cls.inst
#查询所有
def selectall(self,sql='',param=()):
    #判断是否连接,并设置重连机制
    # self.connected()
    try:
        cursor,conn=self.execute(sql,param)
        res=cursor.fetchall()
        self.close(cursor, conn)
        return res
    except Exception,e:
        print 'selectall except   ', e.args
        self.close(cursor, conn)
        return None

#查询一条
def selectone(self,sql='',param=()):
    # self.connected()
    try:
        # cur = self.db.cursor()
        cursor, conn=self.execute(sql,param)
        res = cursor.fetchone()
        self.close(cursor, conn)
        return res
    except Exception, e:
        print 'selectone except   ', e.args
        self.close(cursor, conn)
        return None

#增加
def insert(self,sql='',param=()):
    # self.connected()
    try:
        # self.db.getconn().execute(sql, param)
        cursor, conn=self.execute(sql,param)
        print '============'
        # _id=self.db.conn.insert_id()
        _id=cursor.lastrowid
        print '_id   ',_id
        conn.commit()
        self.close(cursor, conn)
        #防止表中没有id返回0
        if _id==0:
            return True
        return _id
    except Exception, e:
        print 'insert except   ', e.args
        conn.rollback()
        self.close(cursor, conn)
        # self.conn.rollback()
        return 0

#增加多行
def insertmany(self,sql='',param=()):
    # self.connected()
    cursor,conn=self.db.getconn()
    try:
        cursor.executemany(sql, param)
        # self.execute(sql,param)
        conn.commit()
        self.close(cursor, conn)
        return True
    except Exception, e:
        print 'insert many except   ', e.args
        conn.rollback()
        self.close(cursor, conn)
        # self.conn.rollback()
        return False

#删除
def delete(self,sql='',param=()):
    # self.connected()
    try:
        # cur = self.conn.cursor()
        # self.db.getconn().execute(sql, param)
        cursor,conn=self.execute(sql,param)
        # self.db.conn.commit()
        self.close(cursor, conn)
        return True
    except Exception, e:
        print 'delete except   ', e.args
        conn.rollback()
        self.close(cursor, conn)
        # self.conn.rollback()
        return False

#更新
def update(self,sql='',param=()):
    # self.connected()
    try:
        #cur = self.conn.cursor()
        # self.db.getconn().execute(sql, param)
        cursor,conn=self.execute(sql,param)
        # self.db.conn.commit()
        self.close(cursor, conn)
        return True
    except Exception, e:
        print 'update except   ',e.args
        conn.rollback()
        self.close(cursor, conn)
        # self.conn.rollback()
        return False

@claSSMethod
def getInstance(self):
    if MysqlHelp.mysql==None:
        MysqlHelp.mysql=MysqlHelp()
    return MysqlHelp.mysql

#执行命令
def execute(self,sql='',param=(),autoclose=False):
    cursor, conn = self.db.getconn()
    try:
        if param:
            cursor.execute(sql, param)
        else:
            cursor.execute(sql)
        conn.commit()
        if autoclose:
            self.close(cursor, conn)
    except Exception as e:
        pass
    return cursor, conn

#执行多条命令
'[{"sql":"xxx","param":"xx"}....]'
def executemany(self,list=[]):
    cursor,conn=self.db.getconn()
    try:
        for order in list:
            sql=order['sql']
            param=order['param']
            if param:
                cursor.execute(sql,param)
            else:
                cursor.execute(sql)
        conn.commit()
        self.close(cursor, conn)
        return True
    except Exception as e:
        print 'execute failed========',e.args
        conn.rollback()
        self.close(cursor, conn)
        return False
def connect(self):
    self.conn = MySQLdb.connect(user='root', db='asterisk', passwd='kalamodo', host='192.168.88.6')

def close(self,cursor,conn):
    cursor.close()
    conn.close()
    print u"PT连接池释放con和cursor";

传送门 http://download.csdn.net/download/u010939285/9831459


--结束END--

本文标题: python DbUtils 使用教程

本文链接: https://lsjlt.com/news/191479.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python DbUtils 使用教程
    下载:https://pypi.python.org/pypi/DBUtils/1.2先下载你要安装的包,并解压到磁盘下;进入到该文件的setup.py 目录下 ,打开cmd,并切换到该目录下;先执行 python setup.py bu...
    99+
    2023-01-31
    教程 python DbUtils
  • DBUtils使用事务
    1.DBUtils是java编程中的数据库操作实用工具,小巧简单实用,它对事物是如何管理的呢? 我们都知道在jdbc中事物是由Connection对象来控制的 DBUtils工具类最核心的一个类是Query...
    99+
    2024-04-02
  • 数据库连接池DBUtils使用
    一、简介   DBUtils简单说python实现的线程化数据库连接(连接池),DBUtils支持所有遵循DP-API 2规范的数据库连接模块,例如:mysql、sqlserver、oracle、sqlite3等,更多请参考官网:htt...
    99+
    2023-01-30
    数据库 连接池 DBUtils
  • Python openpyxl使用教程
    openpyxl是Python下的Excel库,它能够很容易的对Excel数据进行读取、写入以及样式的设置,能够帮助我们实现大量的、重复的Excel操作,提高我们的办公效率,实现Excel办公自动...
    99+
    2023-09-01
    python 开发语言 openpyxl 办公自动化
  • 教你使用pyinstaller打包Python教程
    目录一、单个文件打包1.1 简单打包1.2 带图标打包二、项目多文件打包三、打包后文件太大一、单个文件打包 1.1 简单打包 例如现在有一个main.py文件内容如下 impor...
    99+
    2024-04-02
  • JavaWeb如何使用DBUtils实现增删改查
    这篇文章主要讲解了“JavaWeb如何使用DBUtils实现增删改查”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaWeb如何使用DBUtils实现增删改查”吧!JavaWeb 使用D...
    99+
    2023-06-21
  • JavaWeb 使用DBUtils实现增删改查方式
    目录JavaWeb 使用DBUtils实现增删改查1、创建C3p0Utils类2、创建DBUtilsDao类3、创建测试类4、执行测试类Java DBUtils技术访问数据库DBUt...
    99+
    2024-04-02
  • 【Python】pyinstaller完整使用教程
      python代码想要像C语言一样编译得到exe文件可能要稍微麻烦一点,不过也还好,python中有一个第三方包pyinstaller可以较为方便地将py文件转换成exe文件。使用时直接在控制台输入...
    99+
    2023-09-18
    python pyinstaller dll 打包
  • Python Pandas的简单使用教程
    一、  Pandas简介 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型...
    99+
    2022-06-02
    Python Pandas使用 Python Pandas
  • Python教程:如何使用npm load?
    Python是一种广泛使用的编程语言,它有许多不同的库和模块,可以用来完成各种各样的任务。其中,Node.js的npm包管理器是一个非常有用的工具,它可以帮助我们轻松地安装和管理Python库。在本文中,我们将探讨如何使用npm load...
    99+
    2023-06-20
    教程 npm load
  • Python 教程中如何使用 Spring?
    Python 是一种广泛使用的编程语言,而 Spring 则是一种流行的 Java 开发框架。虽然 Python 和 Java 是两种不同的编程语言,但 Python 开发者仍然可以使用 Spring 框架来构建他们的应用程序。本文将介绍如...
    99+
    2023-08-31
    教程 spring numpy
  • Python教程之如何使用wxPython
    wxPython是一个用于开发桌面应用程序的Python库,它是基于wxWidgets库开发的,提供了丰富的GUI组件和工具。以下是...
    99+
    2023-09-22
    python
  • python 使用 openpyxl 处理 Excel 教程
    目录 前言一、安装openpyxl库二、新建excel及写入单元格1.创建一个xlsx格式的excel文件并保存2.保存成流(stream)3.写入单元格 三、创建sheet工作表及操作四...
    99+
    2023-09-05
    excel python 开发语言 openpyxl
  • Python中使用ipython的详细教程
    ipython简介 ipython他是一个非常流行的python解释器,相比于原生的python解释器,有太多优点和长处,因此几乎是python开发人员的必知必会。 1、ipython相比于原生的python有什么...
    99+
    2022-06-02
    Python使用ipython Python ipython解释器
  • Python ttkbootstrap的介绍与使用教程
    目录一、什么是ttkbootstrap?二、安装步骤三、开始使用四、总结时间五、参考文献一、什么是ttkbootstrap? 官方文档 [较慢]:https://ttkbootstr...
    99+
    2023-03-21
    Python ttkbootstrap使用 Python ttkbootstrap
  • Python Matplotlib初阶使用入门教程
    目录0. 前言1. 创建Figure的两种基本方法1.1 第1种方法1.2 第2种方法2. Figure的解剖图及各种基本概念2.1 Figure2.2 Axes2.3 Axis2....
    99+
    2024-04-02
  • Python的requests网络编程包使用教程
    早就听说requests的库的强大,只是还没有接触,今天接触了一下,发现以前使用urllib,urllib2等方法真是太搓了…… 这里写些简单的使用初步作为一个记录 一、下载 官方项目页: https:/...
    99+
    2022-06-04
    网络编程 教程 Python
  • python编程Flask框架简单使用教程
    目录基础知识使用框架的优点Flask常用扩展包基本格式拓展return重定向取网址参数content-typecookie\sessionflask路由request属性上下文注册路...
    99+
    2024-04-02
  • iReport使用教程(示例教程)
    在使用ireport的过程中,因为各种功能都要百度,但是大家使用的例子又千差万别让人很苦恼,所以用一个简单例子贯穿的展示一下ireport的常见功能。 iReport简介 说到iRe...
    99+
    2024-04-02
  • Python使用BeautifulSoup库解析HTML基本使用教程
    BeautifulSoup是Python的一个第三方库,可用于帮助解析html/XML等内容,以抓取特定的网页信息。目前最新的是v4版本,这里主要总结一下我使用的v3版本解析html的一些常用方法。 准备...
    99+
    2022-06-04
    教程 Python BeautifulSoup
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作