python封裝一個工具類 ,對MySQL資料庫增刪改查,可多欄位動態插入mysql資料庫中
阿新 • • 發佈:2021-07-07
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')