pymysql 增删改查二次封装

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:      Joson
# @DateTime:    2020/3/6 14:02
# @Description: Pymysql 增删改查操作
# @Version:     1.0

import pymysql

class DataBaseHandle(object):
    """定义MYSQL数据库操作类"""
    def __init__(self):
        """初始化数据库信息创建连接"""
        self.host = 'host'
        self.username = 'root'
        self.password = '123456'
        self.database = 'dbname'
        self.port = 3306
        self.db = pymysql.connect(self.host,self.username,self.password,self.database,self.port,charset='utf8')

    def insertDB(self,sql):
        """插入数据"""
        self.cursor = self.db.cursor()
        try:
            self.cursor.execute(sql)
            self.db.commit()
        except Exception as err:
            print('insert data error:',err)
            self.db.rollback() # 发生错误时回滚
        finally:
            self.cursor.close()

    def insertListDB(self,table,dataList):
        """批量插入列表数据
        Params:
            table:插入数据的表名称
            dataList:数据列表 [{key:value,}{key:value,},...]
        """
        self.cursor = self.db.cursor()
        cols = ', '.join('`{}`'.format(k) for k in dataList[0].keys())
        val_cols = ', '.join('%({})s'.format(k) for k in dataList[0].keys())
        sql = 'INSERT INTO {}(%s) values(%s)'.format(table)

        res_sql = sql % (cols, val_cols)
        try:
            self.cursor.executemany(res_sql, dataList)  # 将字典列表传入
            self.db.commit()
        except Exception as err:
            print('insert many data error:', err)
            self.db.rollback()
        finally:
            self.cursor.close()

    def deleteDB(self,sql):
        """删除数据"""
        self.cursor = self.db.cursor()
        try:
            self.cursor.execute(sql)
            self.db.commit()
        except Exception as err:
            print('delete data error:',err)
            self.db.rollback()
        finally:
            self.cursor.close()

    def updateDB(self,sql):
        """修改数据"""
        self.cursor = self.db.cursor()
        try:
            self.cursor.execute(sql)
            self.db.commit()
        except Exception as err:
            print('update data error:',err)
            self.db.rollback()
        finally:
            self.cursor.close()

    def selectDB(self,sql):
        """查询数据"""
        self.cursor = self.db.cursor() # 以元组格式返回查询结果
        # self.cursor = self.db.cursor(cursor=pymysql.cursors.DictCursor) # 查以字典格式返回查询结果
        try:
            self.cursor.execute(sql)
            data = self.cursor.fetchall()
        except Exception as err:
            data = tuple()
            print('select data error:',err)
        finally:
            self.cursor.close()
        return data

    def closeDB(self):
        """关闭数据库连接"""
        self.db.close()

if __name__ == '__main__':
    DbHandle = DataBaseHandle()
    # DbHandle.insertDB('INSERT INTO minitor(id,used_order) VALUES ("999","321")')
    # DbHandle.deleteDB('DELETE FROM minitor WHERE id="999"')
    # DbHandle.updateDB('UPDATE minitor SET used_order="888" WHERE id="999"')
    # data = DbHandle.selectDB('SELECT * FROM minitor WHERE id="999" LIMIT 10')
    # dataList = [{'id':123,'used_order':777},{'id':789,'used_order':555}]
    # DbHandle.insertListDB('minitor',dataList)
    DbHandle.closeDB()
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是使用pymysql进行增删查的示例代码: 1. 连接数据库 ```python import pymysql # 打开数据库连接 db = pymysql.connect("localhost", "root", "password", "testdb") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() ``` 2. 插入数据 ```python # SQL 插入语句 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('%s', '%s', '%d', '%c', '%d' )" % ('Mac', 'Mohan', 20, 'M', 2000) try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() ``` 3. 查询数据 ```python # SQL 查询语句 sql = "SELECT * FROM EMPLOYEE WHERE INCOME > '%d'" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % (fname, lname, age, sex, income)) except: print("Error: unable to fetch data") ``` 4. 更新数据 ```python # SQL 更新语句 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() ``` 5. 删除数据 ```python # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修 db.commit() except: # 发生错误时回滚 db.rollback() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JOSON.

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值