• 数据库增删改查封装


    https://www.cnblogs.com/BlueSkyyj/p/10039972.html

    关于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'])
  • 相关阅读:
    pip 提示import error,cannot import name locations
    Selenium 报错 提示“unable to find an ant file to run”
    python-unexpected content storage modification出错
    C++对象的动态建立与释放
    C++构造函数和析构函数
    C++类的访问控制关键字
    C++之namespace、bool
    C++ 学习笔记
    内存泄漏
    内存回收机制
  • 原文地址:https://www.cnblogs.com/victory-0315/p/13644392.html
Copyright © 2020-2023  润新知