python 连接oracle、mysql数据库,获取执行sql受影响的行数

工作中使用python脚本,连接到各种数据库,批量执行sql可以提高执行效率,但通常,我们在类似DBeaver、navicat上面,执行语句后可以直观看到本次操作,受影响的数据有多少条,如下图,但在代码里,我们delete、insert后,无法直观看到执行sql是否成功,今天主要解决这个问题,让python返回受影响的行数,方便我们校验,sql语句是否真的执行成功~
在这里插入图片描述
我们可以通过游标获取受影响数据,可以看下update部分的返回值:return self.coon.affected_rows()
以下是mysql代码实例:

import pymysql


class HandleDB:

    def __init__(self, host, port, user, passwd, database):
        self.coon = pymysql.connect(
            host=host,
            port=port,
            user=user,
            passwd=passwd,
            database=database,
            charset='utf8',
            cursorclass=pymysql.cursors.DictCursor
        )
        # 创建游标
        self.cur = self.coon.cursor()

    def select_one_data(self, sql):
        self.coon.commit()
        self.cur.execute(sql)
        return self.cur.fetchone()

    def select_all_data(self, sql):
        self.coon.commit()
        self.cur.execute(sql)
        return self.cur.fetchall()

    def update(self, sql):
        """
        执行数据库的增/删/改操作
        :param sql:
        :return:
        """
        self.cur.execute(sql)
        self.coon.commit()
        return self.coon.affected_rows()

    def close(self):
        self.cur.close()
        self.coon.close()

oracle的方法和mysql不同,update部分的返回值:return self.cur.rowcount,以下是oracle方法:

import cx_Oracle


class HandleDBora:

    def __init__(self, host, port, user, passwd, service_name):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.service_name = service_name
        self.coon = cx_Oracle.connect('{}/{}@{}:{}/{}'.format(self.user, self.passwd, self.host, self.port,
                                                              self.service_name))  # 连接数据库字符串

        self.cur = self.coon.cursor()  # 创建游标

    def select_one_data(self, sql):
        self.coon.commit()
        self.cur.execute(sql)
        return self.cur.fetchone()

    def update(self, sql):
        """
        执行数据库的增/删/改操作
        :param sql:
        :return:
        """
        self.cur.execute(sql)
        self.coon.commit()
        return self.cur.rowcount

    def close(self):
        self.cur.close()
        self.coon.close()

以下是实际调用后的结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值