文章目录
- [一、SQL 语法回顾](#一、SQL 语法回顾)
- 二、select-查询数据(重点)
-
- [2.1 查询操作步骤](#2.1 查询操作步骤)
- [2.2 cursor游标](#2.2 cursor游标)
-
- [2.2.1 cusor对象的fetch*()方法](#2.2.1 cusor对象的fetch*()方法)
- [2.2.2 cusor对象的fetch*()方法的原理](#2.2.2 cusor对象的fetch*()方法的原理)
- [2.3 查询案例](#2.3 查询案例)
- 三、异常捕获
-
- [3.1 语法](#3.1 语法)
- [3.2 案例](#3.2 案例)
- 四、增删改-数据(重点)
-
- [4.1 增删改操作步骤](#4.1 增删改操作步骤)
- [4.2 案例](#4.2 案例)
-
- [4.2.1 insert插入](#4.2.1 insert插入)
- [4.2.2 update修改](#4.2.2 update修改)
- [4.2.3 delete删除](#4.2.3 delete删除)
- 五、反引号
- 六、小结
一、SQL 语法回顾
- 查询语法:
sql
select * from 表名 where 过滤条件;
select 字段名1,字段名2,... from 表名 where 过滤条件;
- 添加语法:
sql
insert into 表名 字段名 = 字段值;
- 更新语法:
python
update 表名 set 字段名 = 字段值 where 过滤条件;
- 删除语法:
python
delete from 表名 where 过滤条件;
二、select-查询数据(重点)
2.1 查询操作步骤

2.2 cursor游标
- 游标,负责提取结果集中的数据。
- 新创建的游标,指向结果集 0 条记录
- 游标提取数据的方式,提取游标当前指向位置的 下一条记录。
- 每提取一条记录成功,游标会自动向下游动
2.2.1 cusor对象的fetch*()方法
python
# 返回值,元祖数据
cursor.fetchone() # 从结果集中,提取一条记录。
# 返回值,((),(),···)
cursor.fetchmany(size): # 从结果集中,提取 size 条记录。
# 返回值,((),(),···)
cursor.fetchall(): # 提取结果集的 全部数据。
2.2.2 cusor对象的fetch*()方法的原理
1、游标属性 rownumber:标识游标的当前位置 (默认初始位置从0开始) 。
- 常常用来归零。cursor.rownumber = 0
2、cursor.fetch*()方法,是基于游标当前位置逐行向下获取数据

2.3 查询案例
python
要求: 分析:
①:查询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条 数据
python
"""
查询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 语法
python
# 语法:
try:
尝试执行的代码
except Exception as err:
出现异常后,执行的代码
finally:
无论有没有异常,都会执行的代码。
3.2 案例
python
# 导包
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插入
python
"""
新增一条图书数据(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修改
python
"""
把图书名称为 '西游记' 的阅读量增加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删除
python
"""
删除名称为 '西游记' 的图书
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()
五、反引号
反引号的作用:显示字符的本身意思。
sql
`read` = `read`+ 1
六、小结
