【接口测试】4_PyMySQL模块 _操作数据库

一、SQL 语法回顾

  • 查询语法:
select * from 表名 where 过滤条件;
select 字段名1,字段名2... from 表名 where 过滤条件;
  • 添加语法:
insert into 表名 字段名 = 字段值;
  • 更新语法:
update 表名 set 字段名 = 字段值 where 过滤条件;
  • 删除语法:
delete from 表名 where 过滤条件;

二、select-查询数据(重点)

2.1 查询操作步骤

在这里插入图片描述

2.2 cursor游标

  • 游标,负责提取结果集中的数据。
  • 新创建的游标,指向结果集 0 条记录
  • 游标提取数据的方式,提取游标当前指向位置的 下一条记录。
  • 每提取一条记录成功,游标会自动向下游动

2.2.1 cusor对象的fetch*()方法

# 返回值,元祖数据
cursor.fetchone()      # 从结果集中,提取一条记录。

# 返回值,((),(),···)
cursor.fetchmany(size)# 从结果集中,提取 size 条记录。

# 返回值,((),(),···)
cursor.fetchall()# 提取结果集的 全部数据。

2.2.2 cusor对象的fetch*()方法的原理

1、游标属性 rownumber:标识游标的当前位置 (默认初始位置从0开始) 。

  • 常常用来归零。cursor.rownumber = 0

2、cursor.fetch*()方法,是基于游标当前位置逐行向下获取数据

在这里插入图片描述

2.3 查询案例

要求: 									分析::查询t_book表的全部字段数据				   1) select * from t_book
②:获取查询结果集的第一条数据					 2) cursor.rownumber= 0           cursor.fetchone():获取查询结果集的第3条和第4条数据			    3) cursor.rownumber= 2           cursor.fetchmany(2):获取全部的查询结果集及总记录数				4) cursor.rownumber= 0           cursor.fetchall()

查询t_book表,获取 第一条 数据

查询t_book表,获取 全部 数据

查询t_book表,获取 第3条和第4条 数据

"""
查询t_book表,获取 第一条 数据
查询t_book表,获取 全部 数据
查询t_book表,获取 第3条和第4条 数据
"""
# 导包
import pymysql

# 创建连接
conn = pymysql.connect(host="211.103.136.244", port=7061, user="student", password="123456",
                       database="test_db", charset="utf8")

# 创建游标, 指向 0号 记录
my_cursor = conn.cursor()

# 执行 select sql
my_cursor.execute("select * from t_book;")

# 提取 一条
res = my_cursor.fetchone()
print("提1条:", res)

# 设置游标 归零
my_cursor.rownumber = 0
# 提取 全部
res = my_cursor.fetchall()
print("提全部:", res)

# 设置游标位置,指向 2
my_cursor.rownumber = 2
# 提取 3、4 条(共2条数据)
res = my_cursor.fetchmany(2)
print("提取 3、4 条:", res)

# 关闭游标
my_cursor.close()

# 关闭连接
conn.close()

三、异常捕获

3.1 语法

# 语法:
try:
	尝试执行的代码
except Exception as err:
	出现异常后,执行的代码
finally:
	无论有没有异常,都会执行的代码。

3.2 案例

# 导包
import pymysql

# 定义全局变量,初值为空。
conn = None
my_cursor = None

try:
    # 创建连接
    conn = pymysql.connect(host="211.103.136.244", port=7061, user="student", password="123456",
                           database="test_db", charset="utf8")
    # 创建游标, 指向 0号 记录
    my_cursor = conn.cursor()

    # 执行 select sql
    my_cursor.execute("select * from _book;")

    # 提取 一条
    res = my_cursor.fetchone()
    print("提1条:", res)

    # 设置游标 归零
    my_cursor.rownumber = 0
    # 提取 全部
    res = my_cursor.fetchall()
    print("提全部:", res)

    # 设置游标位置,指向 2
    my_cursor.rownumber = 2
    # 提取 3、4 条(共2条数据)
    res = my_cursor.fetchmany(2)
    print("提取 3、4 条:", res)

except Exception as err:
    print("查询失败:", str(err))

finally:
    # 关闭游标
    my_cursor.close()

    # 关闭连接
    conn.close()

在这里插入图片描述

四、增删改-数据(重点)

4.1 增删改操作步骤

在这里插入图片描述

4.2 案例

单独实现如下操作:
①:新增一条图书数据(id:5 title:西游记 pub_date:1986-01-01 )
②:把图书名称为 ‘西游记’ 的阅读量增加1
③:删除名称为 ‘西游记’ 的图书

4.2.1 insert插入

"""
新增一条图书数据(id:5 title:西游记 pub_date:1986-01-01 )
insert into t_book(id, title, pub_date) values(9, '西游记', '1986-01-01');
"""
# 导包
import pymysql

# 定义全局变量,初值为空。
conn = None
my_cursor = None

try:
    # 创建连接
    conn = pymysql.connect(host="211.103.136.244", port=7061, user="student", password="123456",
                           database="test_db", charset="utf8")

    # 创建游标
    my_cursor = conn.cursor()

    # 执行 insert sql
    my_cursor.execute("insert into t_book(id, title, pub_date) values(9, '西游记', '1986-01-01');")
    # 影响多少行
    print("Affected rows:", conn.affected_rows())
    
    # 提交事务
    conn.commit()

except Exception as err:
    print("插入数据异常:", str(err))
    # 回滚事务
    conn.rollback()

finally:
    # 关闭游标
    my_cursor.close()

    # 关闭连接
    conn.close()

在这里插入图片描述

4.2.2 update修改

"""
把图书名称为 ‘西游记’ 的阅读量增加1。(read 表示阅读量 )
UPDATE t_book set `read` = `read`+ 1 where title = '西游记';
"""
# 导包
import pymysql

# 定义全局变量,初值为空。
conn = None
my_cursor = None

try:
    # 创建连接
    conn = pymysql.connect(host="172.16.28.4", port=3306, user="root", password="123456",
                           database="books", charset="utf8")

    # 创建游标
    my_cursor = conn.cursor()

    # 执行 update sql
    my_cursor.execute("UPDATE t_book set `read` = `read`+ 1 where title = '西游记';")
    # 影响多少行
    print("Affected rows:", conn.affected_rows())

    # 提交事务
    conn.commit()
    
    
except Exception as err:
    print("更新sql失败:", str(err))
    conn.rollback()

finally:
    # 关闭游标
    my_cursor.close()

    # 关闭连接
    conn.close()

4.2.3 delete删除

"""
删除名称为 ‘西游记’ 的图书
delete from t_book where title = '西游记';
"""
# 导包
import pymysql

conn = None
my_cursor = None

try:
    conn = pymysql.connect(host="172.16.28.4", port=3306, user="root", password="root",
                           database="books", charset="utf8")

    # 创建游标
    my_cursor = conn.cursor()

    # 执行 delete sql
    my_cursor.execute("delete from t_book where title = '西游记';")
    # 影响多少行
    print("Affected rows:", conn.affected_rows())

    # 提交事务
    conn.commit()

except Exception as err:
    print("删除sql失败:", str(err))
    conn.rollback()

finally:
    # 关闭游标
    my_cursor.close()

    # 关闭连接
    conn.close()

五、反引号

反引号的作用:显示字符的本身意思。

`read` = `read`+ 1

六、小结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少云清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值