Python pymysql 增刪改查封裝
阿新 • • 發佈:2018-11-29
關於pymysql 的增刪改查,簡單做個封裝,方便後面使用直接拿來呼叫即可。
其中 增刪改 的處理其實是一致的,本可以使用統一的方法,但是為了明顯區分,這裡分開來寫了。
直接看程式碼就即可,如下:
# FileName : DBHandle.py # Author : Adil # DateTime : 2018/11/29 2:03 PM # SoftWare : PyCharm import pymysql # username : adil # password : helloyyj class DataBaseHandle(object):''' 定義一個 MySQL 操作類''' def __init__(self,host,username,password,database,port): '''初始化資料庫資訊並建立資料庫連線''' # 下面的賦值其實可以省略,connect 時 直接使用形參即可 self.host = host self.username = username self.password = password self.database = database self.port= port self.db = pymysql.connect(self.host,self.username,self.password,self.database,self.port,charset='utf8') # 這裡 註釋連線的方法,是為了 例項化物件時,就建立連線。不許要單獨處理連線了。 # # def connDataBase(self): # ''' 資料庫連線 ''' # # self.db = pymysql.connect(self.host,self.username,self.password,self.port,self.database)# # # self.cursor = self.db.cursor() # # return self.db def insertDB(self,sql): ''' 插入資料庫操作 ''' self.cursor = self.db.cursor() try: # 執行sql self.cursor.execute(sql) # tt = self.cursor.execute(sql) # 返回 插入資料 條數 可以根據 返回值 判定處理結果 # print(tt) self.db.commit() except: # 發生錯誤時回滾 self.db.rollback() finally: self.cursor.close() def deleteDB(self,sql): ''' 操作資料庫資料刪除 ''' self.cursor = self.db.cursor() try: # 執行sql self.cursor.execute(sql) # tt = self.cursor.execute(sql) # 返回 刪除資料 條數 可以根據 返回值 判定處理結果 # print(tt) self.db.commit() except: # 發生錯誤時回滾 self.db.rollback() finally: self.cursor.close() def updateDb(self,sql): ''' 更新資料庫操作 ''' self.cursor = self.db.cursor() try: # 執行sql self.cursor.execute(sql) # tt = self.cursor.execute(sql) # 返回 更新資料 條數 可以根據 返回值 判定處理結果 # print(tt) self.db.commit() except: # 發生錯誤時回滾 self.db.rollback() finally: self.cursor.close() def selectDb(self,sql): ''' 資料庫查詢 ''' self.cursor = self.db.cursor() try: self.cursor.execute(sql) # 返回 查詢資料 條數 可以根據 返回值 判定處理結果 data = self.cursor.fetchall() # 返回所有記錄列表 print(data) # 結果遍歷 for row in data: sid = row[0] name = row[1] # 遍歷列印結果 print('sid = %s, name = %s'%(sid,name)) except: print('Error: unable to fecth data') finally: self.cursor.close() def closeDb(self): ''' 資料庫連線關閉 ''' self.db.close() if __name__ == '__main__': DbHandle = DataBaseHandle('127.0.0.1','adil','helloyyj','AdilTest',3306) DbHandle.insertDB('insert into test(name) values ("%s")'%('FuHongXue')) DbHandle.insertDB('insert into test(name) values ("%s")'%('FuHongXue')) DbHandle.selectDb('select * from test') DbHandle.updateDb('update test set name = "%s" where sid = "%d"' %('YeKai',22)) DbHandle.selectDb('select * from test') DbHandle.insertDB('insert into test(name) values ("%s")'%('LiXunHuan')) DbHandle.deleteDB('delete from test where sid > "%d"' %(25)) DbHandle.selectDb('select * from test') DbHandle.closeDb()
檢視執行結果
((22, 'YeKai'), (23, 'FuHongXue'), (24, 'LiXunHuan'), (25, 'FuHongXue'), (49, 'FuHongXue'), (50, 'FuHongXue')) sid = 22, name = YeKai sid = 23, name = FuHongXue sid = 24, name = LiXunHuan sid = 25, name = FuHongXue sid = 49, name = FuHongXue sid = 50, name = FuHongXue ((22, 'YeKai'), (23, 'FuHongXue'), (24, 'LiXunHuan'), (25, 'FuHongXue'), (49, 'FuHongXue'), (50, 'FuHongXue')) sid = 22, name = YeKai sid = 23, name = FuHongXue sid = 24, name = LiXunHuan sid = 25, name = FuHongXue sid = 49, name = FuHongXue sid = 50, name = FuHongXue ((22, 'YeKai'), (23, 'FuHongXue'), (24, 'LiXunHuan'), (25, 'FuHongXue')) sid = 22, name = YeKai sid = 23, name = FuHongXue sid = 24, name = LiXunHuan sid = 25, name = FuHongXue
以上只是簡單的樣例,具體使用 還需要根據自己的實際情況就行 修改,比如 sql,這裡寫的簡單,還有查詢結果,結果的處理分析,自己根據需要自行解析。
關於資料庫 的連線 ,埠號 和字元型別,可寫可不寫,如果預設埠 不是 3306 就必須寫了,且注意 寫的位置。
self.db = pymysql.connect(self.host,self.username,self.password,self.database[,self.port,charset='utf8'])