在功能、接口测试中,常常需要通过数据库的操作,来准备数据、检测环境及核对功能、接口的数据库操作是否正确。 在自动化测试中,就需要我们用代码连接数据库自动完成数据准备、

环境检查及数据库断言的功能。数据库有很多类型,关系型数据库和非关系数据库,这里主要介绍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。

具体使用方法如下:

 import pymysql

 ip ='127.0.0.1'
port = 3306 #端口类型是数字int
username ='root'
password = ''
db ='test'
charset ='utf8'
# sql = input("请输入要执行的sql:")
sql ='select * from c;' #创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集,autocommit
conn = pymysql.connect(host=ip,port=port,user=username,password=password,db = db,charset=charset,autocommit=True)
# conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123456', db='test',charset='utf8',autocommit=True)
#创建游标,结果返回的是元组
# cusor = conn.cursor()
#创建游标,指定游标类型为字典类型,结果返回的是字典
cusor = conn.cursor(pymysql.cursors.DictCursor)
#执行sql,create insert update select
cusor.execute(sql)
#手动提交,conn 配置autocommit则不需要该行
conn.commit()
# 获取最新自增ID
new_id = cusor.lastrowid
print(new_id)
#关闭游标
cusor.close()
#关闭连接
conn.close()
#获取查询结果的第一条数据
print(cusor.fetchone())
#获取前n行数据
print(cusor.fetchmany())
#获取所有数据
print(cusor.fetchall())

二、python操作redis

redis是一个非关系型数据库,数据都存在内存中,有很快的读写速度,python操作redis要使用redis模块,可直接使用pip install redis安装。

 import redis  #导入redis模块

 #指定连接redis的ip、端口、数据库
r= redis.Redis(host='127.0.0.1',password='',port=6379,db =0,decode_responses=True)
r1= redis.Redis(host='127.0.0.1',password='',port=6379,db =1,decode_responses=True)
#======================字符串类型========================
r.set('key',"{'key1':'value'}") #设置值
r.mset({'addr':'beijing','phone':15421114455}) #批量设置值
print(r.get('key')) #获取值
print(r.mget('key1','key2')) #批量获取值
r.expire('key',30) #设置有效时间
r.delete('name') # 删除值
r.delete('key1','key2') #批量删除
r.setnx('name2', 'value') # 设置的name的值,如果name不存在的时候才会设置
r.setex('name3', 'value', 3) # 设置的name的值,和超时时间,过了时间key就会自动失效
#=======================哈希类型============================
#set 哈希类型的值
r1.hset('hname','key','value')
r1.hset('students','myj',"{'money':50000,'addr':'北京','phone':13562141562}")
#批量设置哈希类型的key和value
r1.hmset('hname',{'key1':'value','key2':'value'})
r1.hmset('students',{'ym':"{'money':50004,'addr‘:'广州','phone':17144445555}",
'tm':"{'money':50005,'addr':'杭州',phone:13211111111}"})
print(r1.hget("students","libai")) #获取值
print(r1.hget('hname','key'))
print(r1.hgetall('hname')) #获取hname所有的值
r1.hdel('hname') # 删除哈希类型hname所有的值
print(r.keys()) #获取redis连接库的所有key 

10 python学习笔记-操作数据库(十)的更多相关文章

  1. flask学习笔记(-操作数据库)

    Python 数据库框架 大多数的数据库引擎都有对应的 Python 包,包括开源包和商业包.Flask 并不限制你使用何种类型的数据库包,因此可以根据自己的喜好选择使用 MySQL.Postgres ...

  2. python学习笔记(二十八)日志模块

    我们在写程序的时候经常会打一些日志来帮助我们查找问题,这次学习一下logging模块,在python里面如何操作日志.介绍一下logging模块,logging模块就是python里面用来操作日志的模 ...

  3. Python学习笔记 使用数据库SQlite Mysql

    SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用当中, 甚至在IOS和Android的APP中都可以集成 Python就内 ...

  4. Python学习笔记_Mysql数据库、Excel

    一.操作mysql数据库 import pymysql # 1.连上数据库:账号,密码,ip,端口号,数据库 # 2.建立游标(去数据库拿东西的工人) # 3.执行sql # 4.获取结果 # 5.关 ...

  5. Python学习笔记(二十五)操作文件和目录

    摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319253241 ...

  6. python学习笔记——mongodb数据库

    1 概述 1.1 文件管理阶段 优点:可以长期保存 能存储大量数据 缺点:没有结构化的组织 查找不方便 数据容易冗余 1.2 数据库管理阶段 有文件存储的优点,同时解决了文件存储的问题 缺点 : 操作 ...

  7. Python学习笔记020——数据库基本操作

    本数据库的操作是Linux虚拟机平台下进行的 1 启动和链接MySQL服务 1.1 服务端 (1)查看服务状态 sudo /etc/init.d/mysql stauts (2)启动服务端 sudo ...

  8. Python学习笔记【第十五篇】:Python网络编程三ftp案例练习--断点续传

    开发一个支持多用户在线的FTP程序-------------------主要是学习思路 实现功能点 1:用户登陆验证(用户名.密码) 2:实现多用户登陆 3:实现简单的cmd命令操作 4:文件的上传( ...

  9. Python学习笔记【第十篇】:Python面向对象进阶

    保护对象的属性 如果有一个对象,当需要对其进行修改属性时,有2种方法 对象名.属性名 = 数据 ---->直接修改 对象名.方法名() ---->间接修改 为了更好的保存属性安全,即不能随 ...

随机推荐

  1. 如何判断前后端bug

    测试工程师不只是负责发现问题,除了发现问题这种基本功外,定位问题,提出解决方案,提出预防方案也是要掌握的技能.这里先说定位问题的要求,定位问题要向深入,前提当然是对功能.产品的流程.开发方案.开发人员 ...

  2. Object的wait、notify和notifyAll

    Obect的wait.notify 和 notifyAll是Object提供的同步方法,也就是所有对象都生而带来的方法,估计搞java的没有不知道这几个方法的.那么他究竟是怎么使用的呢?在此处记录一下 ...

  3. Spring boot 梳理 - 代码结构(Main类的位置)

    Spring boot 对代码结构无特殊要求,但有个套最佳实践的推荐 不要使用没有包名的类.没有包名时,@ComponentScan, @EntityScan, or @SpringBootAppli ...

  4. Eureka参数配置->Server端参数

    1.基本参数 参数 默认值 说明 eureka.server.enable-self-preservation true 是否开启自我保护模式 eureka.server.renewal-percen ...

  5. Python常用端口扫描

    from socket import * import sys host=sys.argv[1] service={':'HTTP', ':'SQL_Server', ':'Remote_Destop ...

  6. dedecms5.7最新漏洞修复

    最近发现织梦cms被挂马现象频繁,解决好好几个网站的问题,但是过不了多久,就又被攻击了,即使更改系统及ftp密码,也没有起到防御的作用,最后怀疑cms本身漏洞,于是采用工具扫描了一下,才发现问题的严重 ...

  7. laravel 5.5 运行在 php7.0 报错 Symfony\Component\Translation\Translator.php FatalThrowableErrorParse error: syntax error, unexpected '?', expecting variable (T_VARIABLE)

    问题描述 报错原因是 php-cli 版本是 7.1.x,运行 composer create-project ... 命令时安装的依赖包会自动适配到当前 php 版本 7.1.x.如果 php-fp ...

  8. 【Visual Studio】关于vs 打开网站时报错 配置iis express失败 无法访问IIS元数据库...

    关于vs 打开网站时报错 配置iis express失败 无法访问IIS元数据库... 我安装了vs2015,一开始创建项目,网站都没问题,有一次突然打开项目时报错,瞬间懵逼,我啥都没干啊!!! 网上 ...

  9. vue使用vant-ui实现上拉加载、下拉刷新和返回顶部

    vue使用vant-ui实现上拉加载.下拉刷新和返回顶部 vue现在在移动端常用的ui库有vant-ui和mint-ui,上拉加载.下拉刷新和返回顶部也是移动端最基础最常见的功能.下面就用vant-u ...

  10. python编程基础之十一

    循环语句:周而复始,在满足某个条件下,重复做相同或类型的事情, 循环语句三要素:循环条件 + 循环体 + 循环条件改变while 条件 : 循环体 循环条件改变... while 条件 : 循环体 循 ...