1. 程式人生 > >Python pymysql 增刪改查封裝

Python pymysql 增刪改查封裝

關於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'])