• 0
  • 0
分享
  • 接口自动化:操作数据库mysql——软件测试圈
  • 北极 2021-06-23 16:08:02 字数 1715 阅读 929 收藏 0

常见数据库:mysql、oracle、sqlserver、mongodb、access

需要有数据库驱动来操作:

操作mysql数据库:db-api,pymysql

安装:pymsql库 第三方库

import pymysql

from pymysql.cursors import DictCursor

1.建立连接:

conn = pymysql.connect(host="",user="",password="",database="",port= ,charset=“utf8”,cursorclass=DictCursor)

cursorclass=DictCursor 读取的是元组类型,可读性不强,换成字典,导入这个就变成了字典,需要导入

1.jpg

2.建立游标:

cursor = conn.cursor() 相当于发起请求

3.执行sql:

cursor.execute(“SELECT * FROM 表 limit 2;”)

sql:尽量大写,容易出错

参数(query,args=None)(sql语句,条件如id=1)

传递参数的第一种方式:format --不要用,因为sql注入,写错会导致删库/删表

cursor.execute(“select * from member where mobile_phone={}”.format(mobile)) # 对于动态的mobile

传递参数的第二种方式:args参数:- 方式传递,用%s占坑符 --和python的%s不一样 args = tuple, list or dict

cursor.execute(“select * from member where mobile_phone=%s”,args=[mobile, ]) # 对于动态的mobile

多个参数

cursor.execute(“select * from member where mobile_phone=%s and id=%s”,args=[mobile, 1])

4.获取结果:

cursor.fetchone() # 一条数据
cursor.fetchall() # 全部数据

注意点:同一个游标,多次查询,会导致查询的数据不一样,可以通过新创建一个游标,类似文件操作中的光标

cursor_other = conn.cursor()
cursor_other.fetchone()
cusor_other.execute(“SELECT * FROM 表 limit 2;”)

5.关闭:不关闭会导致内存变多

cursor.close() # 游标关
conn.close() # 连接关

封装为类:

import pymysql
class DbHandler:
def __init__(self,host,user,password,
database,port,charset,
cursorclass=DictCursor,**kw):
# 建立连接
conn = pymysql.connect(config=config,host=host,
password=password,database=database,
port=port,charset=charset,
cursorclass=cursorclass,**kw)
# 建立游标
cursor = conn.cursor()
# 查询 - 提交事务 - 获取结果 - one/all
def query(self,sql,args=None,one=True)
# 执行
self.cursor.excute("sql语句", args)
self.conn.commit()
# 获取结果
if one:
return self.cursor.fetchone()
else:
return self.cursor.fetchall()
# 关闭
def close()
self.cursor.close()
self.conn.close()


作者:国民老公六哥

原文链接:https://blog.csdn.net/weixin_44941728/article/details/105422403

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、引言小屌丝:鱼哥,这金三银四的季节,你作为资深测试开发大佬(面试官),能不能分享一下关于UI自动化测试的技术呢?小鱼:不用给我戴高帽,你的小心思,我能不知道?小屌丝:嘿嘿,我主要提咱粉丝问的小鱼:你操的心还怎不少呢?小屌丝:主要是你分享的那篇《吊打面试官系列之:移动APP测试开发面试题汇总,对标P7~ ~》太给力了。小鱼:你可知道,移动测试app我准备了一周时间,小屌丝:那就麻烦鱼哥再花一个星期,来准备 UI自动化测试开发相关的知识,也让更多的人,能感受吊打"面试官"快感。小鱼:这.....作为一名合格面试官,岂能是被随便吊打的,不过,你的提议确实不错,我考虑下。小屌丝...
            2 3 14117
            分享
          •   软件测试这个行业我见过工作5年依然是初级水平的功能测试,拿着不到1W的薪资,也见过1年时间达到高级自动化水平的大牛学霸!拿着25K的薪资。  影响你薪资的有两点!  一、你的技术水平高低直接决定你薪资的多少,工作时间长短并不能直接影响你的收入,只能说你工作时间短,项目经验不够丰富而已!但薪资照样可以很高!  二、你所在的城市会对薪资有一定的影响,首先一线城市肯定比二三线城市薪资要高,毕竟生活成本也高,其实也就差不多了!  因为我本人是在北京,所以我很清楚北京的行情,大概做1年的测试初级居多,功能测试居多,薪资7-12K都是合理的~二线城市6-10K是合理的,三线城市5-7K是合理的~  不...
            0 0 752
            分享
          •   今天我想分享一下自己当时写简历以及投简历方面的经历,本文内容纯粹是个人简单分享,如果有写得不好的地方还请读者包涵与指正。  我是去年的九月初开始投递简历的,貌似各行各业的人都有“金九银十”的说法,连找工作也不例外,我自己也是这样想的,所以在投简历之前我没有丝毫的担心,我觉得应该很快就能找到工作,但是紧接着就被现实打脸。  我刚开始写简历的时候根本没有好好研究,结构方面完全是照着网上的模板去套用,内容上面也没有认真考量,这导致简历投出去之后几乎无人问津,有的时候好不容易有人过来跟你聊,但通常聊了几句就没下文了,这种状态持续了一个多星期,我开始有点着急了,难道我有这么差劲吗?  好在我当时没有...
            0 0 441
            分享
          • 背景最近在研究如何做接口测试,自己所在的项目,恰好使用的是 HTTP 协议,且内网通信可以直接用 Charles 抓包,能看到明文,自己试着用 Python 的 requests 库进行了收发包,发现可以正常通信,就自然而然的想到了,接口测试落地。之前的项目里,客户端源码也看过一些,网络通信部分也能看懂,但多多少少会有一些问题:序列化/反序列化、加密解密怎么处理?如果用现成代码,C#/Lua 得学;如果用 python 重写,成本太高。抱着侥幸心理,尝试寻找另一种解决方案:从 Python 里调用 C#/Lua 的东西,后来尝试未果。。项目解散,也就没能继续。过程经过探索,编写一条用例流程:构...
            0 0 540
            分享
          •   忙忙碌碌,不知不觉在新公司已经3个月了。尤其是最近一段时间,异常的忙,但是我仍然会抽出一定量的时间来做些开发。  以后成熟的话,打算输出一个手把手开发的系列,分享给更多的测试童鞋。  前几天跟群里一位小伙伴聊天,听到了一个关键词。相信这也是很多测试童鞋都有过的体会,感觉测试容易被开发鄙视,得不到尊重。  既然今天也没什么技术向的内容分享,那就随便聊聊吧,以一个入行3年多的测试小兵的角度,谈谈我的感受。  一、听听测试跟开发都吐槽对方什么?  1.来自开发的问候  由于忙于各种业务,所以认识了很多的开发童鞋。接触的多了,大家话题也就聊开了。因为他们也会跟不同的测试人员合作,所以我偶尔就能听到...
            0 0 812
            分享
      • 51testing软件测试圈微信