陳新龍
前段時間有同學(xué)提出了這樣一個問題,如果我們在運行程序的過程中想把數(shù)據(jù)保留下來,以備下次繼續(xù)使用,該如何操作呢?今天就和大家探討這個問題。
我們都知道一臺電腦的內(nèi)存、硬盤都是用來存放數(shù)據(jù)的,而組織、存儲和管理數(shù)據(jù)的地方就是數(shù)據(jù)庫,也可以稱為電子化的“文件柜”。簡單來說,數(shù)據(jù)庫是一個長期存儲在計算機(jī)內(nèi)的、有組織的、可共享的、統(tǒng)一管理的大量數(shù)據(jù)的集合。它的存儲空間很大,可以存放上億條數(shù)據(jù)。但是數(shù)據(jù)庫并不是隨意地將數(shù)據(jù)進(jìn)行存放,是有一定的規(guī)則的,否則查詢的效率會很低。互聯(lián)網(wǎng)世界中充斥著大量的數(shù)據(jù),為了管理數(shù)據(jù)程序員常用的數(shù)據(jù)庫軟件有Office中的Access,免費數(shù)據(jù)庫管理系統(tǒng)MySQL,企業(yè)級的數(shù)據(jù)庫管理系統(tǒng)甲骨文的Oracle。

MySQL數(shù)據(jù)庫的操作界面如圖1,數(shù)據(jù)庫中存儲的數(shù)據(jù)表格和Excel表格類似,并且數(shù)據(jù)庫對表格的字段格式、操作語法都有嚴(yán)格的要求。要想更好地操作數(shù)據(jù),請搜索“數(shù)據(jù)庫的基礎(chǔ)語法學(xué)習(xí)”,花一些時間學(xué)習(xí)數(shù)據(jù)庫的基本知識。學(xué)習(xí)時注意數(shù)據(jù)庫的創(chuàng)建、表的創(chuàng)建、數(shù)據(jù)的增刪改查、數(shù)據(jù)類型、添加約束等知識點。要想深入學(xué)習(xí)數(shù)據(jù)庫需要花費大量的時間,在此不再贅述。
回到我們最初的問題,如何把數(shù)據(jù)保留下來,就好比我們用Python做過的“成績錄入系統(tǒng)”,將學(xué)生的學(xué)號、姓名及各科成績錄入,當(dāng)學(xué)生成績錄入成功后,列表中會增加一條記錄,記錄著學(xué)生的成績信息,用于下次查詢或者修改。我們之前完成的“叫號管理程序”也和“成績錄入系統(tǒng)”類似,用Python將訂餐數(shù)據(jù)保存在程序的列表中,用于查詢或修改。但是這樣的程序一旦關(guān)閉數(shù)據(jù)就消失了。下面我們著重講一下數(shù)據(jù)庫如何與Python一起結(jié)合使用。
首先我們在MySQL中建立一個數(shù)據(jù)庫,配置并記錄好數(shù)據(jù)庫的參數(shù),這部分需要自行學(xué)習(xí)不再贅述。默認(rèn)情況下,Python環(huán)境中沒有數(shù)據(jù)庫包,我們需要安裝并用“import pymysql”導(dǎo)入PyMySQL庫。下面我們開始使用“DBHOST=‘localhost”“DBUSER=‘root”連接數(shù)據(jù)庫,連接數(shù)據(jù)庫之前需要知曉主機(jī)數(shù)據(jù)庫的主機(jī)地址(DBHOST)、用戶名(DBUSER)、登錄密碼(DBPASS)和數(shù)據(jù)庫的表的表名(DBNAME),其中任何一條信息未匹配成功都會導(dǎo)致連接失敗(提示connect wrong)。我們可以使用try:……except:……來捕獲出現(xiàn)的異常情況(如圖2)。

數(shù)據(jù)庫連接成功后,我們根據(jù)“成績錄入系統(tǒng)”來完成后續(xù)程序設(shè)計,完成將學(xué)生的成績錄入到數(shù)據(jù)庫中,并修改學(xué)生的成績……這需要在Python的基礎(chǔ)上嵌套操作數(shù)據(jù)庫的語句(如圖3)。

向數(shù)據(jù)庫表中插入數(shù)據(jù)的語句是“insert into 表(需要添加的字段)value(字段的值內(nèi)容)”,事先通過Python編寫好設(shè)定變量,順應(yīng)數(shù)據(jù)庫語句的固定格式就可以填充進(jìn)去。同樣依舊使用try:……except:……來捕獲是否出現(xiàn)異常的情況(如圖4)。

完成了向數(shù)據(jù)庫中添加數(shù)據(jù),接下來更新數(shù)據(jù)庫語句就簡單多了:“update 數(shù)據(jù)庫表 set 修改的字段=值(如果有判斷條件的話可以添加where語句)”,例如修改某位同學(xué)的語文成績,通過Python變量賦值的方法重新寫入到數(shù)據(jù)庫中,依舊使用try:……except:……來捕獲是否出現(xiàn)異常的情況(如圖5)。

在如今大數(shù)據(jù)的時代環(huán)境下,數(shù)據(jù)庫的應(yīng)用深入到生活和工作的方方面面。不僅Python,很多編程語言都支持連接數(shù)據(jù)庫進(jìn)行并操作使用。