1. 程式人生 > 其它 >華為雲FusionInsight MRS實戰 - Hudi實時入湖之DeltaStreamer工具最佳實踐

華為雲FusionInsight MRS實戰 - Hudi實時入湖之DeltaStreamer工具最佳實踐

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()