1. 程式人生 > 其它 >python封裝一個工具類 ,對MySQL資料庫增刪改查,可多欄位動態插入mysql資料庫中

python封裝一個工具類 ,對MySQL資料庫增刪改查,可多欄位動態插入mysql資料庫中

import pymysql#匯入庫
class Connct_mysql():#建立一個連線資料庫的類

    def __init__(self,host,user,password,db,port):#在建構函式裡面傳入連線資料庫的引數作為例項變數
        ''' 連線資料庫所需要的引數 '''
        self.host = host
        self.user = user
        self.password = password
        self.db = db
        self.port = port


    def connct_db(self):#定義連線資料庫的方法
        try:#try+except 捕獲異常
            global db#global把db物件,設定為全域性變數
            #connect方法連線資料庫,例項變數作為引數傳入
            db = pymysql.connect(host=self.host, user=self.user, password=self.password, db=self.db, port=self.port)
            global cursor#global把cursor方法建立遊標物件物件,設定為全域性變數
            cursor=db.cursor()#cursor方法建立遊標物件
        except Exception as e:#連線資料庫事變是會任意捕獲異常
            print('資料庫連線失敗', e)




    def select_connct(self,sql):#定義查詢方法,sql為形參,用例傳遞sql語句
        try:
            cursor.execute(sql)#通過遊標物件,呼叫execute執行方法,查詢sql語句
            print(cursor.fetchall())#通過遊標獲取,表資料內容,並列印
        except Exception as e:
            print(e)
            db.rollback()

    def update_connct(self,sql):
        try:
            cursor.execute(sql)#通過遊標執行查詢語句
            db.commit()
        except Exception as e:
            print(e)
            db.rollback()

    def delete_connct(self,sql):
        try:
            cursor.execute(sql)#通過遊標執行查詢語句
            db.commit()
        except Exception as e:
            print(e)
            db.rollback()

    def insert_connct(self,sql,data):
        try:
            cursor.execute(sql, tuple(data.values()))#通過遊標執行查詢語句
            db.commit()
        except Exception as e:
            print(e)
            db.rollback()



if __name__ == '__main__':
    #建立例項物件
    connct_mysql=Connct_mysql('localhost','root','123456','stock',3306)

    #通過物件呼叫connct_db連線資料庫方法,連線資料庫,並設定全域性變數
    connct_mysql.connct_db()

    #傳入引數對資料修改
    connct_mysql.update_connct('update stock_all_codes set code= \'100000\' where code=\'sh000001\'')

    # 傳入引數對錶資料刪除
    connct_mysql.delete_connct('delete from stock_all_codes where code=\'sh00002\'')

    # 傳入引數對錶資料插入資料
    # 多欄位動態插入mysql資料庫中,data,新增欄位
    data = {
        'code': 'sh000001'
    }
    table = 'stock_all_codes'
    keys = ', '.join(data.keys())
    values = ', '.join(['%s'] * len(data))
    sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
    connct_mysql.insert_connct(sql,data)

    # 傳入引數查詢表資料
    connct_mysql.select_connct('select * from stock_all_codes')