1.使用Python操作MySQL数据库
在Windows系统中安装好MySQL8.0.23和Python3.8.7,然后再完成下面题目中的各项操作。
现有以下三个表格:
表1 学生表:Student(主码为Sno)
学号(Sno)
|
姓名(Sname)
|
性别(Ssex)
|
年龄(Sage)
|
所在系别(Sdept)
|
10001
|
Jack
|
男
|
21
|
CS
|
10002
|
Rose
|
女
|
20
|
SE
|
10003
|
Michael
|
男
|
21
|
IS
|
10004
|
Hepburn
|
女
|
19
|
CS
|
10005
|
Lisa
|
女
|
20
|
SE
|
表2 课程表:Course(主码为Cno)
课程号(Cno)
|
课程名(Cname)
|
学分(Credit)
|
00001
|
DataBase
|
4
|
00002
|
DataStructure
|
4
|
00003
|
Algorithms
|
3
|
00004
|
OperatingSystems
|
5
|
00005
|
ComputerNetwork
|
4
|
表3 选课表:SC(主码为Sno,Cno)
学号(Sno)
|
课程号(Cno)
|
成绩(Grade)
|
10002
|
00003
|
86
|
10001
|
00002
|
90
|
10002
|
00004
|
70
|
10003
|
00001
|
85
|
10004
|
00002
|
77
|
10005
|
00003
|
88
|
10001
|
00005
|
91
|
10002
|
00002
|
79
|
10003
|
00002
|
83
|
10004
|
00003
|
67
|
(1) 查询学号为10002学生的所有成绩,结果中需包含学号、姓名、所在系别、课程号、课程名以及对应成绩。
import pymysql.cursors # 连接数据库 connect = pymysql.Connect( host='localhost', port=3306, user='root', passwd='123456789', db='school', charset='utf8' ) # 获取游标 cursor = connect.cursor() # 设置sql语句 sql = "SELECT student.Sno,Sname,Sdept,course.Cno,Cname,Grade " \ "FROM student,course,sc " \ "WHERE student.Sno = sc.Sno AND course.Cno = sc.Cno AND sc.Sno = '%s'" # 设置数据 data = ('10002',) # 执行sql语句 cursor.execute(sql % data) # 获取数据 print("共有%s条记录" % cursor.rowcount) for row in cursor.fetchall(): print("学号:%s\t姓名:%s\t系别:%s\t课程号:%s\t课程名:%s\t成绩:%d" % row) # 关闭数据库连接 cursor.close() connect.close()
|
(2) 查询每位学生成绩大于85的课程,结果中需包含学号、姓名、所在系别、课程号、课程名以及对应成绩。
import pymysql.cursors # 连接数据库 connect = pymysql.Connect( host='localhost', port=3306, user='root', passwd='123456789', db='school', charset='utf8' ) # 获取游标 cursor = connect.cursor() # 设置sql语句 sql = "SELECT student.Sno,Sname,Sdept,course.Cno,Cname,Grade " \ "FROM student,course,sc " \ "WHERE student.Sno = sc.Sno AND course.Cno = sc.Cno AND Grade > %d" # 设置数据 data = (85, ) # 执行sql语句 cursor.execute(sql % data) # 获取数据 print("共有%s条记录" % cursor.rowcount) for row in cursor.fetchall(): print("学号:%s\t姓名:%s\t系别:%s\t课程号:%s\t课程名:%s\t成绩:%d" % row) # 关闭数据库连接 cursor.close() connect.close()
|
(3) 由于培养计划改,现需将课程号为00001、课程名为DataBase的学分改为5学分。
import pymysql.cursors # 连接数据库 connect = pymysql.Connect( host='localhost', port=3306, user='root', passwd='123456789', db='school', charset='utf8' ) # 获取游标 cursor = connect.cursor() # 设置sql语句 sql = "UPDATE course SET Credit = %d " \ "WHERE Cno = '%s'" # 设置数据 data = (5, '00001') # 执行sql语句,并获取执行结果 result = cursor.execute(sql % data) # 提交事务 connect.commit() # 查看执行结果 print(result) # 关闭数据库连接 cursor.close() connect.close()
|
(4) 将学号为10005的学生, OperatingSystems(00004)成绩为73分这一记录写入选课表中。
import pymysql.cursors # 连接数据库 connect = pymysql.Connect( host='localhost', port=3306, user='root', passwd='123456789', db='school', charset='utf8' ) # 获取游标 cursor = connect.cursor() # 设置sql语句 sql = "INSERT INTO sc(Sno,Cno,Grade) VALUES('%s','%s',%d)" # 设置数据 data = ('10005', '00004', 73) # 执行sql语句,并获取执行结果 result = cursor.execute(sql % data) connect.commit() # 输出执行结果 print(result) # 关闭数据库连接 cursor.close() connect.close()
|
(5) 将学号为10003的学生从这三个表中删除。
import pymysql.cursors # 连接数据库 connect = pymysql.Connect( host='localhost', port=3306, user='root', passwd='123456789', db='school', charset='utf8' ) # 获取游标 cursor = connect.cursor() # 设置sql语句 sql = "DELETE FROM student WHERE Sno = '%s'" # 设置数据 data = ('10003',) # 执行sql语句,并获取执行结果 result = cursor.execute(sql % data) connect.commit() # 输出执行结果 print(result) # 关闭数据库连接 cursor.close() connect.close()
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构