requests+unittest接口自动化-mssql数据库类封装

文件路径:项目目录/common/mssql_handler.py

import pymssql

from common.config_handler import conf


class OperateMSsql(object):
    def __init__(self, dbname):
        # 数据库初始化连接
        if dbname == "Test_CityOne":
            self.db_conf = dict(conf.items('mssqlconf_cityone'))
        elif dbname == "Test_rikaze":
            self.db_conf = dict(conf.items('mssqlconf_rikaze'))
        else:
            print("error,dbname not exist")

        self.conn = pymssql.connect(
             host=self.db_conf["host"],
             user=self.db_conf["user"],
             password=self.db_conf["password"],
             database=self.db_conf["db_name"],
             charset="utf8",
             autocommit=False,
             # 库连接中,进行数据库更新之后在进行查询之前一定要进行commit操作(除查询外,增加、删除、修改操作,均需要commit才能生效),如果没有指定autocommit属性为True的话就需要调用commit()方法
         )

        # 创建游标操作数据库
        self.cur = self.conn.cursor(as_dict=True)  # as_dict参数使游标返回字典变量,字典中的键为数据表的列名

    def select_first_data(self, sql):
        """
        查询第一条数据
        """
        try:
            # 使用execute方法执行SQL语句
            self.cur.execute(sql)
        except Exception as e:
            print("执行sql异常:%s" % e)
        else:
            # 获取查询到的第一条数据
            # fetchone:不管查询结果是多条数据还是单条数据,使用fetchone得到的始终是一个元组。如果需要取元组中的数值,需要使用cur.fetchone[0]
            # fetchall:不管查询结果是多条数据还是单条数据,使用fetchall得到的始终是一个由元组组成的列表。如果需要取元组中的数值,需要使用cur.fetchone[0][0]
            first_data = self.cur.fetchone()
            return first_data

    def select_all_data(self, sql):
        """
        查询结果集
        """
        try:
            # 使用execute方法执行SQL语句
            self.cur.execute(sql)
        except Exception as e:
            print("执行sql异常:%s" % e)
        else:
            # 使用 fetchall() 方法获取数据

            first_data = self.cur.fetchall()
            return first_data

    def get_count(self, sql):
        """
        获取数据条数
        """
        self.conn.commit()
        return self.cur.execute(sql)

    def del_data(self, sql):
        """
        删除数据
        """
        res = {}
        try:
            # 执行SQL语句
            result = self.cur.execute(sql)
            # print(result)
            if result != 0:
                # 提交修改
                self.conn.commit()
                res = {'删除成功'}
            else:
                res = {'没有要删除的数据'}
        except:
            # 发生错误时回滚
            self.conn.rollback()
            res = {'删除失败'}
        return res

    def update_data(self, sql):
        """
        修改数据
        """
        try:
            self.cur.execute(sql)
            self.conn.commit()
            res = {'更新成功'}
        except Exception as e:
            self.conn.rollback()
            res = {'更新删除'}
        return res

    def insert_data(self, sql, data):
        """
        新增数据
        """

        try:
            self.cur.execute(sql, data)
            self.conn.commit()
            res = {data, '新增成功'}
        except Exception as e:
            res = {'新增失败', e}
        return res

    def conn_close(self):
        # 关闭数据库连接
        self.cur.close()
        self.conn.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值