前言:

  做接口测试的时候,避免不了操作数据库。因为数据校验需要,测试数据初始化需要、一些参数化场景需要等。  数据库操作框架设计
  这里主要操作mysql数据库,整体思路:

封装实现
  具体代码实现:

import pymysql
import jsonclass OperateMysql(object):def __init__(self):# 数据库初始化连接self.connect_interface_testing = pymysql.connect("localhost","root","123456","test",charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)# 创建游标操作数据库self.cursor_interface_testing = self.connect_interface_testing.cursor()def select_first_data(self, sql):"""查询第一条数据"""try:# 执行 sql 语句self.cursor_interface_testing.execute(sql)except Exception as e:print("执行sql异常:%s"%e)else:# 获取查询到的第一条数据first_data = self.cursor_interface_testing.fetchone()# print(first_data)# 将返回结果转换成 str 数据格式,禁用acsii编码first_data = json.dumps(first_data,ensure_ascii=False)# self.connect_interface_testing.close()return first_datadef select_all_data(self,sql):"""查询结果集"""try:self.cursor_interface_testing.execute(sql)except Exception as e:print("执行sql异常:%s"%e)else:first_data = self.cursor_interface_testing.fetchall()first_data = json.dumps(first_data,ensure_ascii=False)# self.connect_interface_testing.close()return first_datadef del_data(self,sql):"""删除数据"""res = {}try:# 执行SQL语句result = self.cursor_interface_testing.execute(sql)# print(result)if result != 0:# 提交修改self.connect_interface_testing.commit()res = {'删除成功'}else:res = {'没有要删除的数据'}except:# 发生错误时回滚self.connect_interface_testing.rollback()res = {'删除失败'}return resdef update_data(self,sql):"""修改数据"""try:self.cursor_interface_testing.execute(sql)self.connect_interface_testing.commit()res = {'更新成功'}except Exception as e:self.connect_interface_testing.rollback()res = {'更新删除'}return resdef insert_data(self,sql,data):"""新增数据"""try:self.cursor_interface_testing.execute(sql,data)self.connect_interface_testing.commit()res = {data,'新增成功'}except Exception as e:res = {'新增失败',e}return resdef conn_close(self):# 关闭数据库self.cursor_interface_testing.close()if __name__ == "__main__":# ()类的实例化om = OperateMysql()# 新增data = [{'id': 1, 'name': '测试', 'age': 15}, {'id': 2, 'name': '老王', 'age': 10}, {'id': 3, 'name': '李四', 'age': 20}]for i in data:i_data = (i['id'],i['name'],i['age'])insert_res = om.insert_data("""INSERT INTO test_student (id,name,age) VALUES (%s,%s,%s)""",i_data)print(insert_res)# 查询one_data = om.select_first_data("""SELECT * FROM test_student;""")all_data = om.select_all_data("""SELECT * FROM test_student;""")print(one_data)# all_data字符串类型的list转listprint("查询总数据:%s",len(json.loads(all_data)),"分别是:%s",all_data)# 修改update_data = om.update_data("""UPDATE test_student SET name = '王五' WHERE id = 1;""")print(update_data)# 删除del_data = om.del_data("""DELETE FROM test_student WHERE id in (1,2,3);""")print(del_data)# 关闭游标om.conn_close()

运行结果:

为了方便演示,先注释删除数据的sql,再执行程序:

以上就是本文的全部内容,希望对大家的学习有所帮助!

insert执行成功 没有数据_Python—接口测试数据库封装实现原理相关推荐

  1. insert into 多条数据_「数据库」一千行MySQL命令

    基本操作 /* Windows服务 */-- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_pat ...

  2. python代码中怎么增加数据_python 实现数据库中数据添加、查询与更新的示例代码...

    一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...

  3. mysql的过程返回执行成功与失败_进行数据库操作的时候,操作错误或者失败,但是不报错...

    首先需要注意的是: PHP代码的运行错误 和 PHP与MySQL中交互过程中,MySQL中发生的错误,并不一定是同步的. Case 1:使用PDO,没有设置PDO::ATTR_ERRMODE PDO在 ...

  4. python怎么读数据库的数据_python从数据库读取出来的字典怎么更加方便的插入数据库...

    其他的SQL不清楚, pymysql是没有类似函数的. 说到框架,python常用的几个ORM, 我印象中也没有提供类似写法的. 既然没人写,而你又在php里觉得这么用趁手,不如自己按php的思路实现 ...

  5. python中texttable库显示实时数据_python显示数据库数据

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. python自动获取邮件数据_Python 提取数据库(Postgresql)并邮件发送

    刚入门python,发现确实是一个不错的语言. 业务部门要求将将某一个数据库中的表,定期发送到相关部门人员邮箱. 其实整个业务需求很简单,实现起来也不难. 但是由于刚入门python,所以还是借鉴了不 ...

  7. python气象数据_python气象数据库

    弹性高性能计算E-HPC的管理控制台提供了整个集群生命周期的软件管理功能,支持多款主流HPC软件.通信库的一键查询.安装与卸载. 软件管理界面 进入E-HPC管理控制台,点击左侧栏的集群标签,进入集群 ...

  8. mybatis insert 插入数据,显示执行成功,但未真正插入到数据库中

    (1)通过mybatis插入数据库,插入数据,显示插入成功,查询数据库,发现并未插入成功.通过日志可看到原因为:插入的语句回滚连接数据库了,导致插入失败. (2)应加入commit语句,手动执行提交事 ...

  9. Bulk Insert:将文本数据(csv和txt)导入到数据库中

    将文本数据导入到数据库中的方法有很多,将文本格式(csv和txt)导入到SQL Server中,bulk insert是最简单的实现方法 1,bulk insert命令,经过简化如下 BULK INS ...

最新文章

  1. javascript控件(二):一个好用的表格(分页实例)
  2. 使iPhone手机持续振动
  3. java 转jsp_【转】JSP三种页面跳转方式
  4. GPU Gems1 - 15 逐像素光照的可见性管理
  5. html中使用什么标签做的导航栏_自媒体人如何自己建立一个手机网站,超简单,任何人都能做...
  6. 十年 | 在Java开发做了10年后,才学会此绝招,用于颠覆Java应用
  7. docker运行jar包_Jenkins+Docker+Springboot单机版持续集成部署
  8. 【报告分享】迈向万亿市场的直播电商-毕马威+阿里研究院.pdf(附下载链接)...
  9. 关于apache httpd.conf脚本的理解
  10. 降本增效利器!趣头条 Spark Remote Shuffle Service 最佳实践
  11. wget下载网络资源
  12. 安卓Java开启usb热点_安卓手机通过USB共享PC的宽带网络上网
  13. 电脑只能上微信不能打开网页_怎么回事?我的电脑浏览器打不开网页,但微信、QQ却又能用?...
  14. 【ZZULIOJ】1092: 素数表(函数专题)
  15. CSS 实现圆角梯形
  16. 北交《计算题体系结构》实验四——Tomasulo算法实验
  17. wing带你玩转自定义view系列(3)模仿微信下拉眼睛
  18. 印章识别--笛卡尔坐标系转换成极坐标系
  19. 如何将自己的代码上传到github
  20. 大数据在线分析处理和常用工具

热门文章

  1. Angular 响应式表单 patchValue和setValue
  2. php jwt payload,php实现jwt
  3. vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
  4. 解决Sublime Text3 显示中文乱码问题
  5. mysql安装排错-解决1
  6. Awesome Go
  7. Qt Quick编程(1)——QML的核心部分ECMAScript
  8. [转]jQuery: how to get which button was clicked upon form submission?
  9. EDA鸿蒙是不是,如果华为不强研鸿蒙,和阿里合作,新系统或早用到手机上了? - 区块网...
  10. Nagios_快速配置