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

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

    http://blog.csdn.net/qq_34845382/article/details/53885907 自己用Rinnable JAR file 方法也可以.更简单.直接点击Finish即 ...

  2. Maven 梳理-手动创建Maven项目(非web),使用Maven编译、测试、打包、安装、引用

    创建空目录 F:\jtDevelop\maventest\myapp 创建pom.xml文件 <project xmlns="http://maven.apache.org/POM/4 ...

  3. js深度克隆对象、数组

    function deepCopy(o) { if (o instanceof Array) { var n = []; for (var i = 0; i < o.length; ++i) { ...

  4. Linux 查看端口状态netstat

    netstat命令参数: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序) -p ...

  5. linux常用开发命令总结

    linux常用命令 文件操作命令 1. cd 目录名/目录名  切换目录 cd .. 切换到上一级目录  (change dictionary) Ctrl+C强制退出命令行,回到上一级 2.ls    ...

  6. .net core 3.0 Signalr - 06 业务实现-业务分析

    ## 业务需求 1. 人-项目关系 一个人可以属于多个项目,一个项目可以有多个人加入,通知的时候,可以通知项目内的所有人,也可以通知部分人或者某个责任人. 2. 登录互斥 同一个人不允许登录两次(不同 ...

  7. ng 点击事件

    执行事件获取数据 <div class="shijian"> <p>ng 事件</p> <p><button (click)= ...

  8. Web Storage和cookie的区别——每日一题20190629

    Web Storage? 使用HTML5可以在本地存储用户的浏览数据. 使用的主要目的是为了克服Cookie带来的一些限制,当数据需要被严格控制在客户端上时,无需持续的将数据发回服务器 主要目标: 1 ...

  9. Java读源码之ThreadLocal

    前言 JDK版本: 1.8 之前在看Thread源码时候看到这么一个属性 ThreadLocal.ThreadLocalMap threadLocals = null; ThreadLocal实现的是 ...

  10. SQL SERVER 还原误操作导致还原无法停止,处理办法

    昨天遇到运行库不知道单位哪个小伙子,把数据库还原了,导致单位业务全部瘫痪,主数据库一直显示正在还原,真的是不敢动,经过多方寻找,找到此脚本-------------------------数据库还原日 ...