pymysql 增刪改查二次封裝

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:      Joson
# @DateTime:    2020/3/6 14:02
# @Description: Pymysql 增刪改查操作
# @Version:     1.0

import pymysql

class DataBaseHandle(object):
    """定義MYSQL數據庫操作類"""
    def __init__(self):
        """初始化數據庫信息創建連接"""
        self.host = 'host'
        self.username = 'root'
        self.password = '123456'
        self.database = 'dbname'
        self.port = 3306
        self.db = pymysql.connect(self.host,self.username,self.password,self.database,self.port,charset='utf8')

    def insertDB(self,sql):
        """插入數據"""
        self.cursor = self.db.cursor()
        try:
            self.cursor.execute(sql)
            self.db.commit()
        except Exception as err:
            print('insert data error:',err)
            self.db.rollback() # 發生錯誤時回滾
        finally:
            self.cursor.close()

    def insertListDB(self,table,dataList):
        """批量插入列表數據
        Params:
            table:插入數據的表名稱
            dataList:數據列表 [{key:value,}{key:value,},...]
        """
        self.cursor = self.db.cursor()
        cols = ', '.join('`{}`'.format(k) for k in dataList[0].keys())
        val_cols = ', '.join('%({})s'.format(k) for k in dataList[0].keys())
        sql = 'INSERT INTO {}(%s) values(%s)'.format(table)

        res_sql = sql % (cols, val_cols)
        try:
            self.cursor.executemany(res_sql, dataList)  # 將字典列表傳入
            self.db.commit()
        except Exception as err:
            print('insert many data error:', err)
            self.db.rollback()
        finally:
            self.cursor.close()

    def deleteDB(self,sql):
        """刪除數據"""
        self.cursor = self.db.cursor()
        try:
            self.cursor.execute(sql)
            self.db.commit()
        except Exception as err:
            print('delete data error:',err)
            self.db.rollback()
        finally:
            self.cursor.close()

    def updateDB(self,sql):
        """修改數據"""
        self.cursor = self.db.cursor()
        try:
            self.cursor.execute(sql)
            self.db.commit()
        except Exception as err:
            print('update data error:',err)
            self.db.rollback()
        finally:
            self.cursor.close()

    def selectDB(self,sql):
        """查詢數據"""
        self.cursor = self.db.cursor() # 以元組格式返回查詢結果
        # self.cursor = self.db.cursor(cursor=pymysql.cursors.DictCursor) # 查以字典格式返回查詢結果
        try:
            self.cursor.execute(sql)
            data = self.cursor.fetchall()
        except Exception as err:
            data = tuple()
            print('select data error:',err)
        finally:
            self.cursor.close()
        return data

    def closeDB(self):
        """關閉數據庫連接"""
        self.db.close()

if __name__ == '__main__':
    DbHandle = DataBaseHandle()
    # DbHandle.insertDB('INSERT INTO minitor(id,used_order) VALUES ("999","321")')
    # DbHandle.deleteDB('DELETE FROM minitor WHERE id="999"')
    # DbHandle.updateDB('UPDATE minitor SET used_order="888" WHERE id="999"')
    # data = DbHandle.selectDB('SELECT * FROM minitor WHERE id="999" LIMIT 10')
    # dataList = [{'id':123,'used_order':777},{'id':789,'used_order':555}]
    # DbHandle.insertListDB('minitor',dataList)
    DbHandle.closeDB()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章