zoukankan      html  css  js  c++  java
  • 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。

    具体使用方法如下:

     1 import pymysql
     2 
     3 ip ='127.0.0.1'
     4 port = 3306  #端口类型是数字int
     5 username ='root'
     6 password = '123456'
     7 db ='test'
     8 charset ='utf8'
     9 # sql = input("请输入要执行的sql:")
    10 sql ='select * from c;'
    11 
    12 #创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集,autocommit
    13 conn = pymysql.connect(host=ip,port=port,user=username,password=password,db = db,charset=charset,autocommit=True)
    14 # conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123456', db='test',charset='utf8',autocommit=True)
    15 #创建游标,结果返回的是元组
    16 # cusor = conn.cursor()
    17 #创建游标,指定游标类型为字典类型,结果返回的是字典
    18 cusor = conn.cursor(pymysql.cursors.DictCursor)
    19 #执行sql,create insert update select
    20 cusor.execute(sql)
    21 #手动提交,conn 配置autocommit则不需要该行
    22 conn.commit()
    23 # 获取最新自增ID
    24 new_id = cusor.lastrowid
    25 print(new_id)
    26 #关闭游标
    27 cusor.close()
    28 #关闭连接
    29 conn.close()
    30 #获取查询结果的第一条数据
    31 print(cusor.fetchone())
    32 #获取前n行数据
    33 print(cusor.fetchmany())
    34 #获取所有数据
    35 print(cusor.fetchall())

    二、python操作redis

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

     1 import redis  #导入redis模块
     2 
     3 #指定连接redis的ip、端口、数据库
     4 r= redis.Redis(host='127.0.0.1',password='123456',port=6379,db =0,decode_responses=True)
     5 r1= redis.Redis(host='127.0.0.1',password='123456',port=6379,db =1,decode_responses=True)
     6 #======================字符串类型========================
     7 r.set('key',"{'key1':'value'}")  #设置值
     8 r.mset({'addr':'beijing','phone':15421114455}) #批量设置值
     9 print(r.get('key')) #获取值
    10 print(r.mget('key1','key2')) #批量获取值
    11 r.expire('key',30) #设置有效时间
    12 r.delete('name') # 删除值
    13 r.delete('key1','key2') #批量删除
    14 r.setnx('name2', 'value')  # 设置的name的值,如果name不存在的时候才会设置
    15 r.setex('name3', 'value', 3)  # 设置的name的值,和超时时间,过了时间key就会自动失效
    16 #=======================哈希类型============================
    17 #set 哈希类型的值
    18 r1.hset('hname','key','value')
    19 r1.hset('students','myj',"{'money':50000,'addr':'北京','phone':13562141562}")
    20 #批量设置哈希类型的key和value
    21 r1.hmset('hname',{'key1':'value','key2':'value'})
    22 r1.hmset('students',{'ym':"{'money':50004,'addr‘:'广州','phone':17144445555}",
    23                      'tm':"{'money':50005,'addr':'杭州',phone:13211111111}"})
    24 print(r1.hget("students","libai")) #获取值
    25 print(r1.hget('hname','key'))
    26 print(r1.hgetall('hname')) #获取hname所有的值
    27 r1.hdel('hname') # 删除哈希类型hname所有的值
    28 print(r.keys()) #获取redis连接库的所有key 
  • 相关阅读:
    区块链技术术语表
    以太坊客户端Geth命令用法-参数详解
    智能合约开发环境搭建及Hello World合约
    以太坊是什么
    比特币区块结构Merkle树及简单支付验证分析
    非对称加密技术- RSA算法数学原理分析
    验证APNS证书的有效性
    十八般武艺之 Runloop
    iOS 所有设备一览 && CoreFoundation源码
    [User Defaults] Failed to read values in CFPrefsPlistSource (iOS 10)
  • 原文地址:https://www.cnblogs.com/cocomoly/p/11765878.html
Copyright © 2011-2022 走看看