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 
  • 相关阅读:
    HDU1879 kruscal 继续畅通工程
    poj1094 拓扑 Sorting It All Out
    (转)搞ACM的你伤不起
    (转)女生应该找一个玩ACM的男生
    poj3259 bellman——ford Wormholes解绝负权问题
    poj2253 最短路 floyd Frogger
    Leetcode 42. Trapping Rain Water
    Leetcode 41. First Missing Positive
    Leetcode 4. Median of Two Sorted Arrays(二分)
    Codeforces:Good Bye 2018(题解)
  • 原文地址:https://www.cnblogs.com/cocomoly/p/11765878.html
Copyright © 2011-2022 走看看