小編寫這篇文章的主要目的,主要是給大家去做一個介紹,介紹的內(nèi)容還是涉及到Python,主要是利用Python sqlite3,使用第三方的數(shù)據(jù)庫,讀取讀寫SQLite數(shù)據(jù)庫,具體的方法是什么呢?下面給大家詳細解答下。
1數(shù)據(jù)概覽
學(xué)生課程成績:studentID、name、english、chinese、math,存在一定缺失值
2任務(wù)定義
基于學(xué)生課程成績文件,使用pandas和sqlite3將學(xué)生信息輸入SQLite數(shù)據(jù)庫,請在完成對應(yīng)數(shù)據(jù)庫操作后分析學(xué)生課程成績信息,計算各科目平均分并給出總分排名。
3實現(xiàn)步驟
3.1利用pandas讀取學(xué)生信息
import pandas as pd import sqlite3 #利用pandas讀取數(shù)據(jù) student_df=pd.read_csv("./Dataset/student_grades.csv",encoding='utf-8-sig')
3.2利用sqlite3創(chuàng)建數(shù)據(jù)庫和學(xué)生表
#創(chuàng)建學(xué)生成績數(shù)據(jù)庫 conn=sqlite3.connect("./Database/Student_grade.db") ##創(chuàng)建游標 cursor=conn.cursor() ##創(chuàng)建成績表 try: #判斷表是否存在,存在則先刪除 dropif_sql='Drop TABLE IF EXISTS student_grades;' create_sql=''' CREATE TABLE student_grades ( studentID varchar(64), studentName varchar(64), scoreEnglish float(64), scoreChinese float(64), scoreMath float(64) ) ''' cursor.execute(dropif_sql) cursor.execute(create_sql) except: print("Create table failed!")
3.3利用sqlite3將學(xué)生信息存入數(shù)據(jù)庫
#將學(xué)生信息存入數(shù)據(jù)庫 for i in range(student_df.shape[0]): print(student_df.loc[i,:].to_list()) #插入語句 insert_sql=''' INSERT INTO student_grades(studentID,studentName,scoreEnglish,scoreChinese,scoreMath) Values('%s','%s','%f','%f','%f')'''%( str(student_df.loc[i,'StudentID']), str(student_df.loc[i,'name']), student_df.loc[i,'english'], student_df.loc[i,'chinese'], student_df.loc[i,'math'], ) #執(zhí)行語句 cursor.execute(insert_sql) #事物提交 conn.commit()
3.4將李四數(shù)學(xué)成績70錄入SQLite數(shù)據(jù)庫
#錄入李四的數(shù)學(xué)成績 grade_LiSi=70 #更新語句 update_sql='UPDATE student_grades SET scoreMath={}WHERE studentID=10002'.format(grade_LiSi) #執(zhí)行語句 cursor.execute(update_sql) #事物提交 conn.commit() #查詢錄入李四成績后的信息 select_sql='SELECT*FROM student_grades;' #執(zhí)行語句 results=cursor.execute(select_sql) #遍歷輸出 for info in results.fetchall(): print(info)
3.5將數(shù)據(jù)庫中的王五數(shù)學(xué)成績改為85
#更新王五的數(shù)學(xué)成績 grade_WangWu=85 #更新語句 update_sql='UPDATE student_grades SET scoreMath={}WHERE studentID=10003'.format(grade_WangWu) #執(zhí)行語句 cursor.execute(update_sql) #事物提交 conn.commit() #查詢王五的成績 select_sql='SELECT*FROM student_grades WHERE studentID=10003;' #執(zhí)行語句 results=cursor.execute(select_sql) #遍歷輸出 for info in results.fetchall(): print(info) 3.5計算學(xué)生的各科平均分,并給出總分排名 #查詢數(shù)據(jù) select_sql='SELECT*FROM student_grades;' #執(zhí)行語句 results=cursor.execute(select_sql) #計算各科平均分以及總分排名 english_lst=[] chinese_lst=[] math_lst=[] total_dct={} for info in results.fetchall(): english_lst.append(info[2]) chinese_lst.append(info[3]) math_lst.append(info[4]) total_dct[info[1]]=sum(info[2:]) #計算平均分的函數(shù) def average_score(lst): return round(sum(lst)/len(lst),2) #輸出結(jié)果 print("英語平均分為:",average_score(english_lst)) print("語文平均分為:",average_score(chinese_lst)) print("數(shù)學(xué)平均分為:",average_score(math_lst)) print("總成績排名為:",sorted(total_dct.items(),key=lambda x:x[1],reverse=True))
4小小的總結(jié)
在Python中使用sqlite3:
連接數(shù)據(jù)庫:conn=sqlite3.connect(filename),如果數(shù)據(jù)庫不存在,會自動創(chuàng)建再連接。創(chuàng)建游標:cursor=conn.cursor(),SQL的游標是一種臨時的數(shù)據(jù)庫對象,即可以用來
存放在數(shù)據(jù)庫表中的數(shù)據(jù)行副本,也可以指向存儲在數(shù)據(jù)庫中的數(shù)據(jù)行的指針。游標提供了在逐行的基礎(chǔ)上操作表中數(shù)據(jù)的方法。
運用sqlite3運行SQL語句的框架:
?、俣xsql語句,存儲到字符串sql中
?、谑褂糜螛颂峤粓?zhí)行語句:cursor.execute(sql)
?、凼褂眠B接提交事務(wù):conn.commit()
綜上所述,這篇文章就給大家完畢了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/128361.html
摘要:每個對象包括一個標題,一個和頂層的元數(shù)據(jù)鍵,下面是提取作品標題的代碼對應(yīng)下面創(chuàng)建的查詢在接下來的例子中,將提取包含特定標簽的條目。對于擴展,該可選字典提供了附加元數(shù)據(jù)進行標記字段,以及通過前綴的長度存儲快速前綴查詢。 早在九月份,編程界出現(xiàn)一個名為 json1.c 的文件,此前這個文件一直在 SQLite 的庫里面。還有,筆者也曾總結(jié)通過使用新的 json1 擴展來編譯 pysqli...
摘要:另外,項目在單元測試中使用的是的內(nèi)存數(shù)據(jù)庫,這樣開發(fā)者運行單元測試的時候不需要安裝和配置復(fù)雜的數(shù)據(jù)庫,只要安裝好就可以了。而且,數(shù)據(jù)庫是保存在內(nèi)存中的,會提高單元測試的速度。是實現(xiàn)層的基礎(chǔ)。項目一般會使用數(shù)據(jù)庫來運行單元測試。 OpenStack中的關(guān)系型數(shù)據(jù)庫應(yīng)用 OpenStack中的數(shù)據(jù)庫應(yīng)用主要是關(guān)系型數(shù)據(jù)庫,主要使用的是MySQL數(shù)據(jù)庫。當然也有一些NoSQL的應(yīng)用,比如Ce...
摘要:,引言自帶一個輕量級的關(guān)系型數(shù)據(jù)庫。作為后端數(shù)據(jù)庫,可以搭配建網(wǎng)站,或者為網(wǎng)絡(luò)爬蟲存儲數(shù)據(jù)。在一些場景下,網(wǎng)絡(luò)爬蟲可以使用存儲采集到的網(wǎng)頁信息。爬蟲打數(shù)機將在版本支持,不妨想想一下網(wǎng)絡(luò)爬蟲與打數(shù)機連接在一起會怎樣。 showImg(https://segmentfault.com/img/bVyUfA); 1,引言 Python自帶一個輕量級的關(guān)系型數(shù)據(jù)庫SQLite。這一數(shù)據(jù)庫使用S...
閱讀 923·2023-01-14 11:38
閱讀 895·2023-01-14 11:04
閱讀 756·2023-01-14 10:48
閱讀 2055·2023-01-14 10:34
閱讀 961·2023-01-14 10:24
閱讀 840·2023-01-14 10:18
閱讀 510·2023-01-14 10:09
閱讀 588·2023-01-14 10:02