大数据采集实验

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据采集实验

一.实验目的
(1)熟悉使用Python操作MySQL数据库的方法。
二. 实验平台
(1)操作系统:Windows7及以上;
(2)MySQL版本:5.5及以上;
(3)Python版本:3.7及以上。
三. 实验步骤
在Windows系统中安装好MySQL5.5及以上和Python3.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)
1 DataBase 4
2 DataStructure 4
3 Algorithms 3
4 OperatingSystems 5
5 ComputerNetwork 4

表3 选课表:sc(主码为Sno,Cno)
学号(Sno) 课程号(Cno) 成绩(Grade)
10002 3 86
10001 2 90
10002 4 70
10003 1 85
10004 2 77
10005 3 88
10001 5 91
10002 2 79
10003 2 83
10004 3 67

通过编程实现以下题目:
(1)查询学号为10003学生的所有成绩,结果中需包含学号、姓名、所在系别、课程号、课程名以及对应成绩。
(2)查询每位学生成绩大于86的课程,结果中需包含学号、姓名、所在系别、课程号、课程名以及对应成绩。
(3)由于培养计划改,现需将课程号为00001、课程名为DataBase的学分改为5学分。
(4)将学号为10005的学生, OperatingSystems(00004)成绩为73分这一记录写入选课表中。
(5)将学号为10002的学生从这三个表中删除。

【参考答案】
为了节省建表时间,在此直接将建表的脚本文件附上,只需要在Mysql可视化软件Navicat上连接Mysql后,创建school数据库,右击school数据库,点击运行SQL文件,找到脚本文件位置运行。最后在空白位置右击刷新,即可在school数据库中创建以上三个表格及数据。
如果刷新之后还是无法显示题中的三个表格,关闭数据库连接后再连接即可。

(1)查询学号为10003学生的所有成绩,结果中需包含学号、姓名、所在系别、课程号、课程名以及对应成绩。
import pymysql.cursors

连接数据库

connect = pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='root',
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 = ('10003',)

执行sql语句

cursor.execute(sql % data)

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='10003'"

cursor.execute(sql)

获取数据

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)查询每位学生成绩大于86的课程,结果中需包含学号、姓名、所在系别、课程号、课程名以及对应成绩。
import pymysql.cursors

连接数据库

connect = pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='root',
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 = (86, )

执行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)由于培养计划改,现需将课程号为1、课程名为DataBase的学分改为5学分。
import pymysql.cursors

连接数据库

connect = pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='root',
db='school',
charset='utf8'
)

获取游标

cursor = connect.cursor()

设置sql语句

sql = "UPDATE course SET Credit = %d WHERE Cno = %d"

设置数据

data = (5, 1)

执行sql语句,并获取执行结果

result = cursor.execute(sql % data)

提交事务

connect.commit()

查看执行结果

print(result)

关闭数据库连接

cursor.close()
connect.close()

(4)将学号为10005的学生, OperatingSystems(4)成绩为73分这一记录写入选课表中。
import pymysql.cursors

连接数据库

connect = pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='root',
db='school',
charset='utf8'
)

获取游标

cursor = connect.cursor()

设置sql语句

sql = "INSERT INTO sc(Sno,Cno,Grade) VALUES(%d,%d,%d)"

设置数据

data = (10005, 4, 73)

执行sql语句,并获取执行结果

result = cursor.execute(sql % data)
connect.commit()

输出执行结果

print(result)

关闭数据库连接

cursor.close()
connect.close()

(5)将学号为10002的学生从这三个表中删除。
import pymysql.cursors

连接数据库

connect = pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='root',
db='school',
charset='utf8'
)

获取游标

cursor = connect.cursor()

设置sql语句

sql = "DELETE FROM student WHERE Sno = %d"

设置数据

data = (10002,)

执行sql语句,并获取执行结果

result = cursor.execute(sql % data)
connect.commit()

输出执行结果

print(result)

关闭数据库连接

cursor.close()
connect.close()

四.实验报告
《大数据采集》实验报告
班级: 姓名: 学号: 日期:
实验环境:
实验内容与目的:
具体过程(备注:不必写完整代码,写核心程序即可,每步结果截图保留):(分值80分,每大步16分)。
(1)查询学号为10003学生的所有成绩,结果中需包含学号、姓名、所在系别、课程号、课程名以及对应成绩。

(2)查询每位学生成绩大于86的课程,结果中需包含学号、姓名、所在系别、课程号、课程名以及对应成绩。

(3)由于培养计划改,现需将课程号为1、课程名为DataBase的学分改为5学分。

(4)将学号为10005的学生, OperatingSystems(4)成绩为73分这一记录写入选课表中。

(5)将学号为10002的学生从这三个表中删除。

实验总结:(如可写出现的问题和解决方案等内容)(分值20分)。
实验总结:

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
分布式计算 Hadoop 大数据
【大数据开发技术】实验05-HDFS目录与文件的创建删除与查询操作
【大数据开发技术】实验05-HDFS目录与文件的创建删除与查询操作
199 0
|
分布式计算 Hadoop 大数据
【大数据开发技术】实验04-HDFS文件创建与写入
【大数据开发技术】实验04-HDFS文件创建与写入
318 0
|
分布式计算 大数据 Hadoop
【大数据开发技术】实验03-Hadoop读取文件
【大数据开发技术】实验03-Hadoop读取文件
200 0
|
分布式计算 Hadoop Java
【大数据开发技术】实验01-Hadoop安装部署
【大数据开发技术】实验01-Hadoop安装部署
272 0
|
5月前
|
数据采集 存储 分布式计算
Nutch爬虫在大数据采集中的应用案例
Nutch爬虫在大数据采集中的应用案例
|
5月前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之数据源同步时,使用脚本模式采集mysql数据到odps中,使用querySql方式采集数据,在脚本中删除了Reader中的column,但是datax还是报错OriginalConfPretreatmentUtil - 您的配置有误。如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
canal 消息中间件 关系型数据库
大数据数据库增量日志采集之Canal
大数据数据库增量日志采集之Canal
|
SQL 分布式计算 调度
开源大数据分析实验(1)——简单用户画像分析之采集数据
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
|
SQL 分布式计算 运维
开源大数据分析实验(2)——简单用户画像分析之加工数据
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
|
SQL 数据采集 搜索推荐
开源大数据分析实验(4)——简单用户画像分析之数据可视化展现
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。