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)"
       
'''

 

posted @ 2019-09-11 16:07  M兔  阅读(195)  评论(0编辑  收藏  举报