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。
具体使用方法如下:
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学习笔记-操作数据库(十)的更多相关文章
- flask学习笔记(-操作数据库)
Python 数据库框架 大多数的数据库引擎都有对应的 Python 包,包括开源包和商业包.Flask 并不限制你使用何种类型的数据库包,因此可以根据自己的喜好选择使用 MySQL.Postgres ...
- python学习笔记(二十八)日志模块
我们在写程序的时候经常会打一些日志来帮助我们查找问题,这次学习一下logging模块,在python里面如何操作日志.介绍一下logging模块,logging模块就是python里面用来操作日志的模 ...
- Python学习笔记 使用数据库SQlite Mysql
SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用当中, 甚至在IOS和Android的APP中都可以集成 Python就内 ...
- Python学习笔记_Mysql数据库、Excel
一.操作mysql数据库 import pymysql # 1.连上数据库:账号,密码,ip,端口号,数据库 # 2.建立游标(去数据库拿东西的工人) # 3.执行sql # 4.获取结果 # 5.关 ...
- Python学习笔记(二十五)操作文件和目录
摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319253241 ...
- python学习笔记——mongodb数据库
1 概述 1.1 文件管理阶段 优点:可以长期保存 能存储大量数据 缺点:没有结构化的组织 查找不方便 数据容易冗余 1.2 数据库管理阶段 有文件存储的优点,同时解决了文件存储的问题 缺点 : 操作 ...
- Python学习笔记020——数据库基本操作
本数据库的操作是Linux虚拟机平台下进行的 1 启动和链接MySQL服务 1.1 服务端 (1)查看服务状态 sudo /etc/init.d/mysql stauts (2)启动服务端 sudo ...
- Python学习笔记【第十五篇】:Python网络编程三ftp案例练习--断点续传
开发一个支持多用户在线的FTP程序-------------------主要是学习思路 实现功能点 1:用户登陆验证(用户名.密码) 2:实现多用户登陆 3:实现简单的cmd命令操作 4:文件的上传( ...
- Python学习笔记【第十篇】:Python面向对象进阶
保护对象的属性 如果有一个对象,当需要对其进行修改属性时,有2种方法 对象名.属性名 = 数据 ---->直接修改 对象名.方法名() ---->间接修改 为了更好的保存属性安全,即不能随 ...
随机推荐
- java+selenium-3.9.1多线程 打开连接截取屏幕截图
废话不多说上代码:(我是用的chrome举得例子哈) 第一步,需要chromedriver.exe 目的和调起chrome 浏览器打开连接,chromedriver.exe的版本与你的chrome版本 ...
- css禁止选中文字
很简单: -moz-user-select:none;/*火狐*/ -webkit-user-select:none;/*webkit浏览器*/ -ms-user-select:none;/*IE10 ...
- kafka报错:Invalid message size: 0
现象 1.kafka topic 部分分区积压 2.问题kafka 节点上一直报错:java.lang.IllegalStateException: Invalid message size: 0 [ ...
- 欢迎加入强哥的 Android 开发交流群
最近建了一个 Android 开发交流群,但不限于交流移动端.前端和后端等相关技术. 本群的宗旨:让所有学习的群友都有进步的机会. 1. 经验交流 在我们学习时遇到困境,或者开发过程中遇到难题,都可以 ...
- flask+layui+echarts实现前端动态图展示数据
效果图: 该效果主要实现一个table展示数据,并在下方生成一个折线图. 实现方式: 1.首先需要对表格进行一个数据加载,这里用到了layui的table.render,具体用法可以参考 https: ...
- 正睿国庆DAY2动态规划专题
正睿国庆DAY2动态规划专题 排列-例题 1~n 的排列个数,每个数要么比旁边两个大,要么比旁边两个小 \(f[i][j]\) 填了前i个数,未填的数有\(j\)个比第\(i\)个小,是波峰 \(g[ ...
- F#周报2019年第40期
新闻 将项目成熟度重新考虑为一个社区过程 介绍.NET Core Windows Form设计器预览1 F# 4.7可以预览新语言特性与语法 视频及幻灯片 DotnetConf2019展示 .NET设 ...
- 一文彻底理解Redis序列化协议,你也可以编写Redis客户端
前提 最近学习Netty的时候想做一个基于Redis服务协议的编码解码模块,过程中顺便阅读了Redis服务序列化协议RESP,结合自己的理解对文档进行了翻译并且简单实现了RESP基于Java语言的解析 ...
- Flume 学习笔记之 Flume NG概述及单节点安装
Flume NG概述: Flume NG是一个分布式,高可用,可靠的系统,它能将不同的海量数据收集,移动并存储到一个数据存储系统中.轻量,配置简单,适用于各种日志收集,并支持 Failover和负载均 ...
- 斐波那契数列n项的值。(递归和非递归算法Golang实现)
递归实现: func f(num int) int { if num == 1 || num == 2 { return 1 } return f(num-1) + f(num-2) } 非递归实现: ...