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

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

    BL2的最后通过汇编调用了board_init_r函数,此时进入BL3的阶段,此时的主要工作: 这一阶段涉及的文件及任务如下 arch/arm/lib/board.c           1. boa ...

  2. 转:ext的xtype值

    基本组件: xtype Class 描述 button Ext.Button 按钮 splitbutton Ext.SplitButton 带下拉菜单的按钮 cycle Ext.CycleButton ...

  3. 美化H标签

    美化H标签 .article-content h2{ font-size:18px; font-weight:bold; background-color: #CEEEFA; border-botto ...

  4. JVM 调优 - JPS

    Java命令学习系列(一)——Jps 2015-04-16 分类:Java 阅读(23993) 评论(7) 阿里大牛珍藏架构资料,点击链接免费获取 jps位于jdk的bin目录下,其作用是显示当前系统 ...

  5. java8 Stream使用总结

    [前言] java8新特性 java8 函数接口 java8 Optional使用总结 Java 8 时间日期使用 java8 lambda表达式 1.流的介绍 Java8 中的 Stream 是对集 ...

  6. 序列标注(BiLSTM-CRF/Lattice LSTM)

    前言 在三大特征提取器中,我们已经接触了LSTM/CNN/Transormer三种特征提取器,这一节我们将介绍如何使用BiLSTM实现序列标注中的命名实体识别任务,以及Lattice-LSTM的模型原 ...

  7. .NET进阶篇-语言章-1-Generic泛型深入

    内容目录 一.概述二.泛型的好处三.泛型使用1.泛型方法2.泛型类.泛型接口四.泛型的功能1.泛型中的默认值2.约束3.协变逆变5.泛型委托4.泛型缓存五.总结 一.概述 泛型我们一定都用过,最常见的 ...

  8. VS Code配置Go语言开发环境(建议使用goland)

    VS Code是微软开源的一款编辑器,插件系统十分的丰富.本文就介绍了如何使用VS Code搭建Go语言开发环境. VS Code配置Go语言开发环境 说在前面的话,Go语言是采用UTF8编码的,理论 ...

  9. Android之各个版本之间的变化

    (1)android5.0 Android5.0之后隐式打开服务需要指明包名 (2)android6.0 Android6.0之后涉及隐私的权限必须动态申请 (3)android8.0 android ...

  10. Sublime Text 3 配置 Phpcs

    Phpcs 插件介绍 可以为 Sublime Text 编辑器提供代码格式检测的功能,使用以下工具(全部可选): PHP_CodeSniffer (phpcs) Linter (php -l) PHP ...