首页 > 技术文章 > pymysql封装

mxq-213 2021-07-06 15:47 原文

pymysql封装

    简单封装
    简单优化

简单封装

import pymysql


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(
            host=self.host,
            user=self.username,
            password=self.password,
            db=self.database,
            port=self.port,
            charset="utf8"

        )
        self.cursor = self.db.cursor(pymysql.cursors.DictCursor)

    def insertDB(self, sql):
        ''' 插入数据库操作 '''

        try:
            # 执行sql
            self.cursor.execute(sql)

            # tt = self.cursor.execute(sql)  # 返回 插入数据 条数 可以根据 返回值 判定处理结果
            # print(tt)
            self.db.commit()

            # query = 'insert into 表名(列名1, 列名2, 列名3, 列名4, 列名5, 列名6) values(%s, %s, %s, %s, %s, %s)'
        # self.cursor.execute(sql)

        except:
            # 发生错误时回滚
            self.db.rollback()
        finally:
            self.cursor.close()

    def deleteDB(self, sql):
        ''' 操作数据库数据删除 '''

        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):
        ''' 更新数据库操作 '''
        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):
        ''' 数据库查询 '''

        try:
            self.cursor.execute(sql)  # 返回 查询数据 条数 可以根据 返回值 判定处理结果

            data = self.cursor.fetchall()  # 返回所有记录列表

            print(data)

        except:
            print('Error: unable to fecth data')
        finally:
            self.cursor.close()

    def closeDb(self):
        ''' 数据库连接关闭 '''
        self.db.close()


if __name__ == '__main__':
    DbHandle = DataBaseHandle('localhost', 'root', '123456', 'db0525', 3306)

    # DbHandle.insertDB("insert into product (title,price,price2) values ('景点4',65,55)")
    # DbHandle.deleteDB("delete from product where title='景点5'")
    DbHandle.selectDb("select * from movie where id > 1")
    DbHandle.closeDb()


简单优化

import pymysql


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(
            host=self.host,
            user=self.username,
            password=self.password,
            db=self.database,
            port=self.port,
            charset="utf8"

        )
        self.cursor = self.db.cursor(pymysql.cursors.DictCursor)

    def select_info(self, sql):
        try:
            self.cursor.execute(sql)  # 返回 查询数据 条数 可以根据 返回值 判定处理结果

            data = self.cursor.fetchall()  # 返回所有记录列表

            return data
        except:
            print('Error: unable to fecth data')
        finally:
            self.cursor.close()

    def not_select_ifo(self, sql):
        try:
            result = self.cursor.execute(sql)
            print(result)
            self.db.commit()
            return result
        except Exception as e:
            raise e
            self.db.rollback()
        finally:
            self.cursor.close()


if __name__ == '__main__':
    DbHandle = DataBaseHandle('localhost', 'root', '123456', 'db0525', 3306)
    sql = 'select * from movie'
    res = DbHandle.select_info(sql)
    print(res)

————————————————
版权声明:本文为CSDN博主「(initial)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/YPeng_Gao/article/details/117571553

推荐阅读