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种方法 对象名.属性名 = 数据 ---->直接修改 对象名.方法名() ---->间接修改 为了更好的保存属性安全,即不能随 ...
随机推荐
- JavaScript之深入对象(一)
在之前的<JavaScript对象基础>中,我们大概了解了对象的创建和使用,知道对象可以使用构造函数和字面量方式创建.那么今天,我们就一起来深入了解一下JavaScript中的构造函数以及 ...
- axios使用post方式请求出现400
在vue中如果直接使用与ajax的参数传递方式类型是不正确的,需要转化,方式有两种 1:使用 new URLSearchParams()构造参数 let params = new URLSearchP ...
- 【面试题】Java基础部分面试题
Java基础面试题 Equals与==的区别 使用==比较原生类型如:boolean,,int,char等等, 使用equals()比较对象. 1. ==是判断两个变量或类型是不是指向同一个内存空 ...
- Hadoop核心组件之YARN
YARN概述 Yet Another Resource Negotiator:另外资源的协调者 通用的资源管理系统 为上层应用提供统一的资源管理和调度 操作系统级别的调度框架,可以让各种计算框架运行在 ...
- Vue Element 导航子路由不选中问题
首先说下遇到的问题 1.进入嵌套路由,当前父导航无法高亮显示 2.页面刷新后导航重置问题 3.在嵌套路由刷新页面也会导致导航重置问题 接下来是解决方案: elementUI 里面有个属性 defaul ...
- ng的显示与隐藏
显示与隐藏有很多中方法,但是在ng中有自己的显示与隐藏的方法 ng-if 或者[hidden] 在此主要介绍的是[hidden] 在ng中需要摒弃dom操作的方法,使用[hidden] 使用方法: e ...
- SQL提高查询效率的几点建议
1.如果要用子查询,那就用EXISTS替代IN.用NOT EXISTS替代NOT IN.因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高.无论在哪种情况下,NOT IN都 ...
- Java字段初始化规律
首先先附上一段代码:public class InitializeBlockDemo { public static void main(String[] args) { InitializeBloc ...
- 04-12 scikit-learn库之随机森林
目录 scikit-learn库之随机森林 一.RandomForestClassifier 1.1 使用场景 1.2 代码 1.3 参数 1.4 属性 1.5 方法 二.RandomForestRe ...
- python编程基础之九
原码, 反码, 补码原码,即用二进制表示正数: 原码 == 反码 == 补码负数: 反码: 原码除符号位之外全部取反 补码: 反码 + 1 位运算:运算符 作用 & 按位与 | 按位或 ^ 按 ...