python+pymysql对数据库进行增、删、改、查操作

一、概述

接口测试中,应用到数据库操作的场景:

 1.校验测试数据

接口发送请求后明确会对数据库中的某个字段进行修改(编辑,更新、删除操作),但,响应结果中无该字段数据时。

例如:删除订单接口,is_delete 字段,没有 在响应结果中出现! 需要借助数据库校验! 例如删除订单接口,

2.构造测试数据

测试数据使用一次就失效,测试前,无法保证测试数据是否存在。

二、pyMySql使用步骤

2.1 安装第三方库PyMySQL
# 方法一:
pip install PyMySQL
# 方法二:
pip install PyMySQL -i https://pypi.douban.com/simple/
2.2 数据库查询操作

# 1. 导包
import pymysql
# 2. 建立连接
conn = pymysql.connect(host="10.51.102.22", port=3306, user="xxxx",
                       password="fxxxxxxxXPF33", database="xxxxxx", charset="utf8")
# 3. 获取游标
cursor = conn.cursor()  # 指向 0 号位置。
# 4. 执行 sql 语句(查询)
cursor.execute("select * from charge_order;")
# 5. 获取结果 - 提取第一条
res1 = cursor.fetchone()
print("res1 =", res1)
print("res1类型", type(res1))
# 修改游标位置:回零
cursor.rownumber = 0
# 关闭游标
cursor.close()
# 7. 关闭连接
conn.close()
fetchone() :从结果集中,提取一行。
fetchmany(size) :从结果集中,提取 size 行。
fetchall() :提取所有结果集。
2.3 数据库增、删、改操作

 

import pymysql

# 定义全局变量
conn = None
cursor = None

try:
    # 2. 创建连接
    conn = pymysql.connect(host="10.51.102.22", port=3306, user="xxx",
                           password="xxxx33", database="xxxx", charset="utf8")
    # 3. 获取游标
    cursor = conn.cursor()

    # 4. 执行 insert 语句(新增运营商信息)
    cursor.execute("INSERT INTO cs_operator "
                   "(id, pay_app_id)"
                   " VALUES(1036, '6124105280304');")

    # 查看 sql执行,影响多少行
    print("影响的行数:", conn.affected_rows())

    # 5. 提交事务
    conn.commit()

except Exception as err:
    print("插入数据错误:", str(err))
    # 回滚事务
    conn.rollback()

finally:
    # 6. 关闭游标
    cursor.close()
    # 7. 关闭连接
    conn.close()

删除、修改语句除了sql语句的参数不一致,其余步骤同上。

2.4 数据库工具类封装
import pymysql


# 封装数据库工具类
class DBUtil(object):
    # 添加类属性
    conn = None

    @classmethod
    def __get_conn(cls):
        # 判断 conn 是否为空,如果是,再创建
        if cls.conn is None:
            cls.conn = pymysql.connect(host="10.51.102.22", port=3306, user="xxxxxxxxxxx",
                           password="xxxxxxxx", database="xxxxxxx", charset="utf8")
        # 返回 非空连接
        return cls.conn

    @classmethod
    def __close_conn(cls):
        # 判断,conn 不为空,需要关闭。
        if cls.conn is not None:
            cls.conn.close()
            cls.conn = None

    # 常用方法:查询一条
    @classmethod
    def select_one(cls, sql):
        cursor = None
        res = None
        try:
            # 获取连接
            cls.conn = cls.__get_conn()

            # 获取游标
            cursor = cls.conn.cursor()

            # 执行 查询语句
            cursor.execute(sql)

            # 提取一条结果
            res = cursor.fetchone()

        except Exception as err:
            print("查询sql错误:", str(err))
        finally:
            # 关闭游标
            cursor.close()

            # 关闭连接
            cls.__close_conn()

            # 将查询sql执行的 结果,返回
            return res

    # 常用方法:增删改
    @classmethod
    def uid_db(cls, sql):
        cursor = None
        try:
            # 获取连接
            cls.conn = cls.__get_conn()

            # 获取游标
            cursor = cls.conn.cursor()

            # 执行 uid 语句
            cursor.execute(sql)
            print("影响的行数:", cls.conn.affected_rows())

            # 提交事务
            cls.conn.commit()

        except Exception as err:
            # 回滚事务
            cls.conn.rollback()
            print("增删改 SQL 执行失败:", str(err))

        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            cls.__close_conn()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/651894.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

读人工智能时代与人类未来笔记16_科学发现

1. 科学发现 1.1. 科学认识的发展往往涉及理论和实验之间的巨大差距以及大量的试错 1.2. 模型不是像传统的那样来自理论理解,而是来自基于实验结果得出结论的人工智能 1.2.1. 这种方法需要的专业知识不同于开发理论模型或传统计…

6、python开发环境-PyCharm

下载完成之后双击进行安装 找到安装好的解释器程序

BERT系列模型 在OCNLI 训练微调 3

目录 0 资料1 项目搭建1.1 环境安装1.2 项目源码1.3 模型下载1.4 目录结构 2 改进部分2.1 可以实现更多模型的切换2.2 固定随机种子,保证输出的数据一致2.3 增加了另一个数据集进行联合训练2.4 模型测试时选择最好的一个模型而非最后一个 3 实验结果 0 资料 这是一…

css(四)

文章目录 css(四)一、其他样式1、圆角边框2、盒子阴影3、文字阴影 二、浮动1、传统网页布局的三种方式2、标准流(普通流/文档流)3、为什么需要浮动?4、什么是浮动?5、浮动特性6、浮动元素经常和标准流父级搭…

Linux IO模型深度解析与实战应用

linux的5种IO模型 一、这里IO是什么 操作系统设有用户态与内核态,确保系统安全。应用程序默认在用户态运行,而执行如IO操作等底层任务时,需切换至内核态以高效执行。 服务器从网络接收的大致流程如下: 1、数据通过计算机网络来到了网卡 2、把网卡的数据读取到 socket 缓…

探索Java的DNA-JVM字节码深度解析

引言 在Java的世界里,JVM(Java虚拟机)是我们程序运行的心脏。而字节码,作为JVM的血液,携带着程序的执行指令。今天,我们将深入探索Java字节码的奥秘,一窥JVM如何将人类可读的代码转化为机器可执…

联发科MT8370平台Genio 510物联网应用程序处理器详细规格参数

MT8370是一款高度集成、功能强大的平台,专为各种人工智能(AI)和物联网(IoT)用例而设计,这些用例需要高性能边缘处理、先进的多媒体和连接功能、多个高分辨率摄像头、连接的触摸屏显示器以及多任务高级操作系统(HLOS)的使用。http://Genio 510 (MT8370) E…

unity制作app(11)--dropdown统一字体

下拉栏统一字体只能在执行的时候,而且要深入到content的最下层 全改以后 这样是无法保存的,但此时已经具备了找content的思维,在非play状态下做如下修改 其他下拉栏照改就可以了。

数组的定义、顺序存储及特殊矩阵的存储

目录 一、数组的定义 1.1概念 1.2抽象数据类型定义 二、数组的顺序存储 2.1一维数组元素的存储位置 2.2二维数组元素的存储位置 2.3三维数组元素的存储位置 三、特殊矩阵的压缩存储 3.1相关概念 3.2对称矩阵 3.3三角矩阵 3.4对角矩阵(带状矩阵&#xff0…

HBase安装

安装HBase 提示:需要安装好hadoop和zookeeper 安装zookeeper可参考 一、确定HBase版本 去网站确认 https://hbase.apache.org/book.html#hadoop二、下载HBase安装包 去清华大学镜像站下载 https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/三、安装HBase …

FTP协议——LightFTP安装(Linux)

1、简介 LightFTP是一个轻量级的FTP(File Transfer Protocol,文件传输协议)客户端软件。FTP是一种用于在网络上传输文件的标准协议,允许用户通过TCP/IP网络(如互联网)在计算机之间进行文件传输。 2、步骤…

运维笔记.Docker镜像分层原理

运维专题 Docker镜像原理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/artic…

10大领域应该怎么记?

文章目录 5大过程组10大领域49个过程输出输入工具与技术 参考文档: https://mp.weixin.qq.com/s/BJ-Dpn0zxTP0TCbeoJXb9A 5大过程组 启动、规划、执行、监控、收尾 10大领域 巧记:【挣饭进城市,咨购风菜干】【狗子整范进—成人风采】 整…

前端nvm、nodejs、npm、cnpm、yarn安装教程(超详细图文,含卸载旧的nodejs,安装及环境变量配置)

最近换了新电脑,一开始在网上找了一个教程让下载nvm-noinstall.zip 压缩包解压使用,踩坑了,过程复杂最后报错无法用。 后来搜到下文教程,直接使用nvm。exe进行安装,方便快捷。下面这个文章写的很详细,从如何…

SwiftUI中TabView(PageTabViewStyle的用法及无限滚动组件infinity carousel)

上一篇文章主要介绍了TabView的基本用法以及一些外观样式的设置,本篇文章主要介绍一下PageTabViewStyle样式下的TabView,该样式下的TabView允许用户整页滑动界面,在UIKit中我们用UIScrollView和UICollectionView制作滚动组件,本文…

家政项目day2 需求分析(模拟入职后熟悉业务流程)

目录 1 项目主体介绍1.1 项目背景1.2 运营模式1.3 项目业务流程 2 运营端需求2.1 服务类型管理2.2 服务项目(服务)管理2.3 区域管理2.4 区域服务管理2.5 相关数据库表的管理2.6 设计工程结构2.7 测试接口(接口断点查看业务代码) 1…

Java实现链表

链表 前言一、链表的概念及结构二、链表的分类三、链表的实现无头单向非循环链表实现无头双向链表实现具体代码 四、链表习题五、顺序表和链表的区别 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我…

Autodesk Flame 2025 for Mac:视觉特效制作的终极利器

在数字时代,视觉特效已经成为电影、电视制作中不可或缺的一部分。Autodesk Flame 2025 for Mac,这款专为视觉特效师打造的终极工具,将为您的创作提供无尽的可能。 Autodesk Flame 2025 for Mac拥有强大的三维合成环境,能够支持您…

05.配置tomcat管理功能

认证失败&#xff0c;需要配置tomcat-users.xml文件 配置用户信息 [rootweb01 /application/tomcat/conf\]# tail tomcat-users.xml <role rolename"admin-gui"/> <role rolename"host-gui"/><role rolename"mana…

数学建模--LaTeX的基本使用

目录 1.回顾 2.设置这个页眉和页脚 3.对于字体的相关设置 4.对于这个分级标题的设置 5.列表的使用 6.插入图片 1.回顾 &#xff08;1&#xff09;昨天我们了解到了这个latex的使用基本常识&#xff0c;以及这个宏包的概念&#xff0c;区域的划分&#xff0c;不同的代码代…