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()

 

            # 此處執行 數據庫插入,將 圖片名稱、url 插入到數據庫   注意 這里的 values('占位符 一定要用 引號引起來,要不然執行不成功,血的教訓')
            sql = "insert into JdwSpider(image_name,image_url) values ('%s','%s')" % (file_name,image_url)
            DbHandle.insertDB(sql)

 

查看執行結果

((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'])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM