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 
原文地址:https://www.cnblogs.com/cocomoly/p/11765878.html