10 python学习笔记-操作数据库
在功能、接口测试中,常常需要通过数据库的操作,来准备数据、检测环境及核对功能、接口的数据库操作是否正确。 在自动化测试中,就需要我们用代码连接数据库自动完成数据准备、
环境检查及数据库断言的功能。数据库有很多类型,关系型数据库和非关系数据库,这里主要介绍python怎么操作mysql、redis。
python操作数据库流程:
- 导入 API 模块,如pymysql。
- 建立数据库的连接:conn=pymysql.connect()
- 从连接建立游标(有游标才能操作数据库):cur = conn.cursor()
- 使用游标执行sql语句(读/写):cur.execute(sql)
- 获取结果(读)/提交更改(写):cur.fetchall()/conn.commit()
- 关闭游标及数据库连接。cur.close()/conn.close()
一、python操作mysql数据库
使用Python操作mysql数据库这里我们需要用到三方库pymysql,可直接使用pip install pymysql安装,在python2中是MySQLdb模块,在python3中没有MySQLdb模块了,所以使用pymysql。
具体使用方法如下:
1 import pymysql
2
3 ip ='127.0.0.1'
4 port = 3306 #端口类型是数字int
5 username ='root'
6 password = '123456'
7 db ='test'
8 charset ='utf8'
9 # sql = input("请输入要执行的sql:")
10 sql ='select * from c;'
11
12 #创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集,autocommit
13 conn = pymysql.connect(host=ip,port=port,user=username,password=password,db = db,charset=charset,autocommit=True)
14 # conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123456', db='test',charset='utf8',autocommit=True)
15 #创建游标,结果返回的是元组
16 # cusor = conn.cursor()
17 #创建游标,指定游标类型为字典类型,结果返回的是字典
18 cusor = conn.cursor(pymysql.cursors.DictCursor)
19 #执行sql,create insert update select
20 cusor.execute(sql)
21 #手动提交,conn 配置autocommit则不需要该行
22 conn.commit()
23 # 获取最新自增ID
24 new_id = cusor.lastrowid
25 print(new_id)
26 #关闭游标
27 cusor.close()
28 #关闭连接
29 conn.close()
30 #获取查询结果的第一条数据
31 print(cusor.fetchone())
32 #获取前n行数据
33 print(cusor.fetchmany())
34 #获取所有数据
35 print(cusor.fetchall())
二、python操作redis
redis是一个非关系型数据库,数据都存在内存中,有很快的读写速度,python操作redis要使用redis模块,可直接使用pip install redis安装。
1 import redis #导入redis模块 2 3 #指定连接redis的ip、端口、数据库 4 r= redis.Redis(host='127.0.0.1',password='123456',port=6379,db =0,decode_responses=True) 5 r1= redis.Redis(host='127.0.0.1',password='123456',port=6379,db =1,decode_responses=True) 6 #======================字符串类型======================== 7 r.set('key',"{'key1':'value'}") #设置值 8 r.mset({'addr':'beijing','phone':15421114455}) #批量设置值 9 print(r.get('key')) #获取值 10 print(r.mget('key1','key2')) #批量获取值 11 r.expire('key',30) #设置有效时间 12 r.delete('name') # 删除值 13 r.delete('key1','key2') #批量删除 14 r.setnx('name2', 'value') # 设置的name的值,如果name不存在的时候才会设置 15 r.setex('name3', 'value', 3) # 设置的name的值,和超时时间,过了时间key就会自动失效 16 #=======================哈希类型============================ 17 #set 哈希类型的值 18 r1.hset('hname','key','value') 19 r1.hset('students','myj',"{'money':50000,'addr':'北京','phone':13562141562}") 20 #批量设置哈希类型的key和value 21 r1.hmset('hname',{'key1':'value','key2':'value'}) 22 r1.hmset('students',{'ym':"{'money':50004,'addr‘:'广州','phone':17144445555}", 23 'tm':"{'money':50005,'addr':'杭州',phone:13211111111}"}) 24 print(r1.hget("students","libai")) #获取值 25 print(r1.hget('hname','key')) 26 print(r1.hgetall('hname')) #获取hname所有的值 27 r1.hdel('hname') # 删除哈希类型hname所有的值 28 print(r.keys()) #获取redis连接库的所有key