首页 > 数据库技术 > 详细

Mysql类

时间:2019-09-11 17:04:25      阅读:84      评论:0      收藏:0      [点我收藏+]
#-*-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)"
       
‘‘‘

 

Mysql类

原文:https://www.cnblogs.com/peak911/p/11506851.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!