zoukankan      html  css  js  c++  java
  • Mysql类

    #-*-coding:utf-8-*-
    import pymysql.cursors
    from pymysql.err import *
    import Log
    from common.setting import *
    
    log = Log.getLogger()
    
    '''
      MySQL工具类
    '''
    class MySqlUtil:
    
         @staticmethod
         def connect(dbInfo):
             # Connect to the database
    
             if not dbInfo in DBinfo.keys():
                 log.error("数据库不存在: "+dbInfo)
                 raise  DatabaseError
    
             conn = pymysql.connect(
                 host=DBinfo[dbInfo]['数据库hosts'],
                 port=int(DBinfo[dbInfo]['数据库端口']),
                 user=DBinfo[dbInfo]['用户名'],
                 passwd=DBinfo[dbInfo]['用户密码'],
                 db=DBinfo[dbInfo]['数据库名称'],
                 charset='utf8'
             )
             log.debug("连接数据库成功,databse="+dbInfo)
             return conn
    
         @staticmethod
         def selectOne (dbInfo,sql)->tuple:
            conn=MySqlUtil.connect(dbInfo)
    
            try:
                cursor = conn.cursor()
                log.debug("开始执行sql={}"+sql)
                cursor.execute(sql)
                dbResult = cursor.fetchone()
            except MySQLError as e:
                log.error(str(e))
    
            except Exception as e:
                log.error(str(e))
    
            finally:
                cursor.close()
                conn.close()
            return dbResult
    
         @staticmethod
         def selectAll(dbInfo, sql)->tuple:
             conn = MySqlUtil.connect(dbInfo)
    
             try:
                 cursor = conn.cursor()
                 log.debug("开始执行sql={}" + sql)
                 cursor.execute(sql)
                 dbResult = cursor.fetchall()
             except MySQLError as e:
                 log.error(str(e))
    
             except Exception as e:
                 log.error(str(e))
    
             finally:
                 cursor.close()
                 conn.close()
             return dbResult
    
         @staticmethod
         def update(dbInfo, sql):
             conn = MySqlUtil.connect(dbInfo)
    
             try:
                 cursor = conn.cursor()
                 log.debug("开始执行sql={}" + sql)
                 cursor.execute(sql)
                 conn.commit()
             except MySQLError as e:
                 log.error(str(e))
                 conn.rollback()
             except Exception as e:
                 log.error(str(e))
                 conn.rollback()
             finally:
                 cursor.close()
                 conn.close()
    
         @staticmethod
         def delete(dbInfo, sql):
             conn = MySqlUtil.connect(dbInfo)
    
             try:
                 cursor = conn.cursor()
                 log.debug("开始执行sql={}" + sql)
                 cursor.execute(sql)
                 conn.commit()
             except MySQLError as e:
                 log.error(str(e))
                 conn.rollback()
             except Exception as e:
                 log.error(str(e))
                 conn.rollback()
             finally:
                 cursor.close()
                 conn.close()
    
    
         @staticmethod
         def insert(dbInfo, sql):
             conn = MySqlUtil.connect(dbInfo)
    
             try:
                 cursor = conn.cursor()
                 log.debug("开始执行sql={}" + sql)
                 cursor.execute(sql)
    
                 conn.commit()
             except MySQLError as e:
                 log.error(str(e))
                 conn.rollback()
             except Exception as e:
                 log.error(str(e))
                 conn.rollback()
             finally:
                 cursor.close()
                 conn.close()
    
         ##批量添加数据,!!!!!数据格式必须list[tuple(),tuple(),tuple()]  或者tuple(tuple(),tuple(),tuple())
         @staticmethod
         def insertBatch(dbInfo, sql,tupleList):
           conn = MySqlUtil.connect(dbInfo)
    
           try:
               cursor = conn.cursor()
               log.debug("开始执行sql={}" + sql)
               cursor.executemany(sql,tupleList)
    
               conn.commit()
           except MySQLError as e:
              log.error(str(e))
              conn.rollback()
           except Exception as e:
             log.error(str(e))
             conn.rollback()
           finally:
                cursor.close()
                conn.close()
    
    '''
    ON DUPLICATE KEY UPDATE 
    存在重复键值时,覆盖
    sql = "INSERT INTO auto_relation (model_name, content,type) 
           VALUES (%s, %s, %s) 
           ON DUPLICATE KEY UPDATE content=VALUES (content)"
           
    '''
  • 相关阅读:
    python基础学习8(浅拷贝与深拷贝)
    适配器模式(Adapter)
    NHibernate的调试技巧和Log4Net配置
    查看表字段的相关的系统信息
    Asp.net MVC 3 开发一个简单的企业网站系统
    ie8 自动设置 兼容性 代码
    同时安装vs2010和VS2012后IEnumerable<ModelClientValidationRule>编译错误
    各种合同样本
    使用远程桌面的朋友可能经常会遇到“超出最大允许连接数”的问题,
    弹出窗口全屏显示:window.showModalDialog与window.open全屏显示
  • 原文地址:https://www.cnblogs.com/peak911/p/11506851.html
Copyright © 2011-2022 走看看