目录
一、数据库操作应用场景
二、安装PyMysql
三、事务的概念
四、数据库的准备
五、PyMysql连接数据库
1、建立连接方法
2、入门案例
六、PyMysql操作数据库
1、数据库查询
1️⃣查询操作流程
2️⃣cursor游标
3️⃣查询常用方法
4️⃣案例
5️⃣异常捕获
2、数据库UID
1️⃣更新操作流程
2️⃣案例:增删改操作
一、数据库操作应用场景
1、校验测试数据
- 接口发送请求后明确会对数据库中的某个字段进行修改,但响应结果中无该字段数据时。
⚪如ihrm 删除员工接口。 is_delete 字段没有在响应结果中出现! 需要借助数据库校验!
2、构造测试数据
- 测试数据使用一次就失效。
⚪如:ihrm 添加员工接口,使用的手机号!
- 测试前,无法保证测试数据是否存在。
⚪如:ihrm 查询员工接口,使用的员工id
二、安装PyMysql
pip install PyMySQL -i https://pypi.douban.com/simple/
操作步骤:
1. 导包 import pymysql
2. 创建连接。 conn = pymysql.connect(host,port, user, password, database, charset)
3. 获取游标。 cursor = conn.cursor()
4. 执行 SQL。 cursor.execute( ”sql语句“ )
查询语句(select)
处理结果集(提取数据:fetch*)
增删改语句(insert、update、delete)
成功:提交事务 conn.commit()
失败:回滚事务 conn.rollback()
5. 关闭游标。cursor.close()
6. 关闭连接。conn.close()
三、事务的概念
更详细的介绍:MySQL数据库04|内置函数、存储过程、视图、事务、索引-CSDN博客
- 事务,是关系型数据库(mysql)特有的概念。
- 事务,可以看做一个虚拟的容器,在容器中存放一系列的数据库操作,看做一个整体。内部的所有操作,要 么都一次性全部成功,只要有一个失败,就全部失败!
- 事务操作:只有 2 种情况
⚪提交:conn.commit()
⚪回滚: conn.rollback()
四、数据库的准备
参考资料:
博客资料:看第一部分中的SQL演练文章浏览阅读2.8k次,点赞2次,收藏21次。文章目录前言# 第一部分:数据库练习准备数据创建数据表插入数据SQL演练1. SQL语句的强化2. 创建"商品分类"表3. 同步表数据4. 创建“商品品牌表”表5. 同步数据6. 修改表结构7. 外键外键取消外键:其实在设计定义数据库的时候,就已经确定了要不要使用外键:比如下面的逻辑。8. 其实就是多创建一个表,然后从原来的表上使用外键进行关联:下面代码可以一次性复制粘贴进行联系# 第二部分:Python 操作 MySQL1. 初尝python与mysql交互2. pymysql查询数据库、面向对象3. p_python mysql数据库练习https://blog.csdn.net/haojie_duan/article/details/122760852
github代码:看第7部分的2和3MySQL学习. Contribute to wmh02240/MySQL-Notes development by creating an account on GitHub.https://github.com/wmh02240/MySQL-Notes/tree/master/MySQL%E5%9F%BA%E7%A1%80/7.MySQL%E4%B8%8EPython%E4%BA%A4%E4%BA%92
视频资料:【数据库查询】11-数据库设计_哔哩哔哩_bilibili【数据库查询】11-数据库设计是【python教程】MySQL数据库的第20集视频,该合集共计36集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/av56919275?vd_source=6069c4cff3b2c943460de92f0c37ea38&spm_id_from=333.788.videopod.episodes&p=20
五、PyMysql连接数据库
1、建立连接方法
conn = pymysql.connect(host="", port=0,
user="", password="", database="", charset="")
host:数据库所在主机 IP地址 - string
port:数据库使用的 端口号 - int
user:连接数据库使用的 用户名 - string
password:连接数据库使用的 密码 - string
database:要连接的那个数据库的名字 - string
charset:字符集。常用 utf8 - string
conn:连接数据库的对 象。
2、入门案例
查询数据库,获取MySQL服务器 版本信息
# 1. 导包
import pymysql
# 2. 建立连接
conn = pymysql.connect(host="localhost", port=3306, user="root",
password="123456", database="jingdong", charset="utf8")
# 3. 获取游标
cursor = conn.cursor()
# 4. 执行 sql 语句(查询)
cursor.execute("select version()")
# 5. 获取结果
res = cursor.fetchone()
print("res =", res[0])
# 6. 关闭游标
cursor.close()
# 7. 关闭连接
conn.close()
六、PyMysql操作数据库
- 查询语法
select 字段1,字段2,... from 表 where 条件;
示例:select id,title, pub_date from t_book where title = '读者';
- 添加语法
insert into 表名(字段1, 字段2, ...) values(值1, 值2, ...);
示例:insert into t_book(id, title, pub_date) values(17, '红楼梦', '2021-11-11');
- 更新语法
update 表名 set 字段名 = 字段值 where 条件
示例:update t_book set title = '三国' where id = 17;
- 删除语法
delete from 表名 where 条件
示例:delete from t_book where title = '三国';
1、数据库查询
1️⃣查询操作流程
2️⃣cursor游标
3️⃣查询常用方法
- fetchone():从结果集中,提取一行。
- fetchmany(size):从结果集中,提取 size 行。
- fetchall():提取所有结果集。
以上三个方法取得的结果都和游标的位置有关,都是从游标的下一个位置开始提取行。
- 属性rownumber:可以设置游标位置。想让游标回到起始位置的话,设置其为0即可。
4️⃣案例
查询goods表,获取第一条数据
查询goods表,获取前两条数据
查询goods表,获取全部数据
查询goods表,获取第3条和第4条 数据
# 1. 导包
import pymysql
# 2. 建立连接
conn = pymysql.connect(host="localhost", port=3306, user="root",
password="123456", database="jingdong", charset="utf8")
# 3. 获取游标
cursor = conn.cursor() # 指向 0 号位置。
# 4. 执行 sql 语句(查询)--- goods
cursor.execute("select * from goods;")
# 5. 获取结果 - 提取第一条
res1 = cursor.fetchone()
print("res1 =", res1)
# 修改游标位置:回零
cursor.rownumber = 0
# 5. 获取结果 - 提取前 2 条
res2 = cursor.fetchmany(2)
print("res2 =", res2)
# 修改游标位置:回零
cursor.rownumber = 0
res3 = cursor.fetchall()
print("res3 =", res3)
# 修改游标位置:指向第 2 条记录
cursor.rownumber = 2
res4 = cursor.fetchmany(2)
print("res4 =", res4)
# 6. 关闭游标
cursor.close()
# 7. 关闭连接
conn.close()
5️⃣异常捕获
try:
尝试执行的代码
except Exception as err:
有错误出现时,执行的代码
finally:
无论有没有错误,都会执行的代码
# 1. 导包
import pymysql
# 定义全局变量,初值为 None
conn = None
cursor = None
try:
# 2. 建立连接
conn = pymysql.connect(host="localhost", port=3306, user="root",
password="123456", database="jingdong", charset="utf8")
# 3. 获取游标
cursor = conn.cursor() # 指向 0 号位置。
# 4. 执行 sql 语句(查询)--- goods
cursor.execute("select * from goods;")
# 5. 获取结果 - 提取第一条
res1 = cursor.fetchone()
print("res1 =", res1)
# 修改游标位置:回零
cursor.rownumber = 0
# 5. 获取结果 - 提取前 2 条
res2 = cursor.fetchmany(2)
print("res2 =", res2)
# 修改游标位置:回零
cursor.rownumber = 0
res3 = cursor.fetchall()
print("res3 =", res3)
# 修改游标位置:指向第 2 条记录
cursor.rownumber = 2
res4 = cursor.fetchmany(2)
print("res4 =", res4)
except Exception as err:
print("查询语句执行出错:", str(err))
finally:
# 6. 关闭游标
cursor.close()
# 7. 关闭连接
conn.close()
2、数据库UID
1️⃣更新操作流程
2️⃣案例:增删改操作
单独实现如下操作:
①:新增一条商品数据
②:把商品id为22的商品名称name改为“修改后修改后xxxxx”
③:删除商品id为22的商品
【补充】pymysql中,事务的开始通常是隐式的。也就是说,当你第一次执行 INSERT
、UPDATE
或 DELETE
等操作时,数据库会自动为你启动一个事务,而你不需要显式调用 begin
来开始事务。
插入数据:
"""
新增一条商品数据
insert into goods values (0,'测试测试测试英寸笔记本',1,1,'2999',default,default);
【注意】插入的第3和4列数据有外键约束,必须得是有效的数据,能和另一个表的主键对应上
1. 导包
2. 创建连接
3. 获取游标
4. 执行 insert 语句
5. 提交/回滚事务
6. 关闭游标
7. 关闭连接
"""
# 1. 导包
import pymysql
# 定义全局变量
conn = None
cursor = None
try:
# 2. 创建连接
conn=pymysql.connect(host="localhost", port=3306, user="root",
password="123456", database="jingdong", charset="utf8")
# 3. 获取游标
cursor = conn.cursor()
# 4. 执行 insert 语句
cursor.execute("insert into goods values (0,'测试测试测试英寸笔记本',1,1,'2999',default,default);")
# 查看 sql执行,影响多少行
print("影响的行数:", conn.affected_rows())
# 5. 提交事务
conn.commit()
except Exception as err:
print("插入数据错误:", str(err))
# 回滚事务
conn.rollback()
finally:
# 6. 关闭游标
cursor.close()
# 7. 关闭连接
conn.close()
修改数据:
"""
把商品id为22的商品名称name改为“修改后修改后xxxxx”
update goods set name='修改后修改后英寸笔记本' where id=22;
1. 导包
2. 建立连接
3. 获取游标
4. 执行 update语句
5. 提交、回滚事务
6. 关闭游标
7. 关闭连接
"""
import pymysql
conn = None
cursor = None
try:
conn = pymysql.connect(host="localhost", port=3306, user="root",
password="123456", database="jingdong", charset="utf8")
cursor = conn.cursor()
cursor.execute("update goods set name='修改后修改后英寸笔记本' where id=22;")
print("影响的行数:",conn.affected_rows())
conn.commit()
except Exception as err:
print("修改数据操作出错:",str(err))
conn.rollback()
finally:
cursor.close()
conn.close()
删除数据:
"""
删除id为22的商品信息
delete from goods where id=22;
1. 导包
2. 建立连接
3. 获取游标
4. 执行 delete 语句
5. 提交、回滚事务
6. 关闭游标
7. 关闭连接
"""
import pymysql
conn = None
cursor = None
try:
conn = pymysql.connect(host="localhost", port=3306, user="root",
password="123456", database="jingdong", charset="utf8")
cursor = conn.cursor()
cursor.execute("delete from goods where id=22;")
print("影响的行数:",conn.affected_rows())
conn.commit()
except Exception as err:
print("删除数据操作出错:",str(err))
conn.rollback()
finally:
cursor.close()
conn.close()
全部内容:
PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获-CSDN博客
PyMysql 01|(包含超详细项目实战)数据库工具类封装-CSDN博客