Python編程基礎(chǔ)與應(yīng)用教學(xué)課件9_第1頁
Python編程基礎(chǔ)與應(yīng)用教學(xué)課件9_第2頁
Python編程基礎(chǔ)與應(yīng)用教學(xué)課件9_第3頁
Python編程基礎(chǔ)與應(yīng)用教學(xué)課件9_第4頁
Python編程基礎(chǔ)與應(yīng)用教學(xué)課件9_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2024年10月19日第九章數(shù)據(jù)持久化2本章內(nèi)容9.1一般文件操作9.2

CSV文件9.3

JSON文件9.4

SQL數(shù)據(jù)庫操作9.5

peewee

本章介紹與數(shù)據(jù)持久化相關(guān)的內(nèi)容。首先介紹一般文件操作的相關(guān)知識。在固定格式文件中,本書選擇CSV和JSON格式文件進(jìn)行介紹。在眾多數(shù)據(jù)庫產(chǎn)品中,本書選擇SQLite數(shù)據(jù)庫進(jìn)行介紹,還將介紹一個(gè)輕量級的PythonORM產(chǎn)品peewee。本講內(nèi)容3本章內(nèi)容9.1一般文件操作9.2

CSV文件9.3

JSON文件9.4

SQL數(shù)據(jù)庫操作9.5

peewee

一般文件操作,是指通過編程直接對文件內(nèi)容進(jìn)行存取,是數(shù)據(jù)持久化的基礎(chǔ)技術(shù)。本講內(nèi)容4第九章數(shù)據(jù)持久化9.1一般文件操作9.1.1文件的概念

在計(jì)算機(jī)中,文件都是以二進(jìn)制的方式存儲在磁盤上,但是根據(jù)文件內(nèi)容的不同,可以將文件分為文本文件和二進(jìn)制文件。文本文件可以使用文本編輯軟件(如記事本)編輯,如擴(kuò)展名為.txt、.xml和.json的文件,擴(kuò)展名為.py的Python程序也是文本文件。文本文件本質(zhì)上仍然是二進(jìn)制文件,但由于它的內(nèi)容只包含文本,可以用特定的方法進(jìn)行處理,在編程時(shí)通常與一般的二進(jìn)制文件區(qū)分處理。5第九章數(shù)據(jù)持久化9.1一般文件操作9.1.1文件的概念

二進(jìn)制文件通常存儲數(shù)據(jù)內(nèi)容,如保存圖片數(shù)據(jù)的圖片文件(.jpg、.bmp等)、保存結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫文件和保存文檔數(shù)據(jù)的Word文件(.doc、.docx等)等。這些是固定格式文件,通常需要專用程序處理。二進(jìn)制文件的格式通常不對外公開,有的甚至還會加密,如大多游戲軟件的數(shù)據(jù)文件,其格式只有開發(fā)者才知道。本節(jié)主要介紹文本文件的操作方法。6第九章數(shù)據(jù)持久化9.1一般文件操作9.1.1文件的概念

從編程的角度看,文件操作分為三個(gè)步驟。各步驟的操作內(nèi)容及對應(yīng)的Python函數(shù)/方法見下表序號步驟函數(shù)/方法說明1打開open()打開文件,并且返回文件對象2讀寫讀read將文件內(nèi)容讀取到內(nèi)存寫write將指定內(nèi)容寫入文件3關(guān)閉close關(guān)閉文件

open()函數(shù)負(fù)責(zé)打開文件,并且返回文件對象;read、write和close都是文件對象的方法。7第九章數(shù)據(jù)持久化9.1一般文件操作9.1.2

文件的打開與關(guān)閉

在對文件進(jìn)行讀寫操作之前,必須先用Python內(nèi)置的open()函數(shù)將文件打開。打開文件后會創(chuàng)建一個(gè)file對象,后續(xù)的操作都要在該對象基礎(chǔ)上,調(diào)用該對象的相關(guān)方法才能進(jìn)行。8第九章數(shù)據(jù)持久化9.1一般文件操作9.1.2

文件的打開與關(guān)閉

open()函數(shù)簡化的語法為:f=open(file_name,mode='r',encoding=None)各個(gè)參數(shù)的說明如下:file_name:文件名稱字符串。mode:一個(gè)字符串,表示打開文件的模式,包括只讀、寫入和追加等。常用的文件打開模式見表9-2,默認(rèn)的打開模式為只讀('r')。encoding:編碼方式,默認(rèn)不指定。

9第九章數(shù)據(jù)持久化9.1一般文件操作9.1.2

文件的打開與關(guān)閉

open()函數(shù)簡化的語法為:模式說明r以只讀方式打開文件。要求打開的文件必須存在,否則報(bào)錯(cuò)。文件指針放在文件的開頭。這是默認(rèn)模式w打開一個(gè)文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始寫入,原有內(nèi)容會被全部刪除。如果該文件不存在,則創(chuàng)建新文件并寫入a打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾,新的內(nèi)容被追加到已有內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件并寫入r+打開一個(gè)文件用于讀寫。要求打開的文件必須存在,否則報(bào)錯(cuò)。文件指針放在文件的開頭。新寫入的內(nèi)容覆蓋原有內(nèi)容,未被覆蓋的內(nèi)容將被保留。w+打開一個(gè)文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,原有內(nèi)容會被全部刪除。如果該文件不存在,則創(chuàng)建新文件用于讀寫a+打開一個(gè)文件用于讀寫。如果該文件已存在則打開文件,文件指針放在文件的結(jié)尾,新的內(nèi)容被追加到已有內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件用于讀寫10第九章數(shù)據(jù)持久化9.1一般文件操作9.1.2

文件的打開與關(guān)閉

總結(jié)規(guī)律:‘r’表示只讀,‘w’表示只寫,‘a(chǎn)’表示追加,‘+’表示讀寫。初學(xué)者對打開模式容易混淆,下圖說明了如何根據(jù)操作目的選擇打開模式。11第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

本節(jié)示例使用IDLE進(jìn)行驗(yàn)證,并且需要為文件操作做一些準(zhǔn)備工作。用任意文本編輯器制作一個(gè)文件file1.txt,將其保存到磁盤,如保存到E:\PyCharmProjects\ch09目錄當(dāng)中,其內(nèi)容為:HelloWorld!HelloPython!說明:文件第二行的結(jié)尾沒有換行。12第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

在IDLE中打開文件有兩種方法,一種是使用文件的絕對路徑:文件名字符串前面的r使字符串中的轉(zhuǎn)義字符失效,其說明見2.3節(jié)。13第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

另一種方法是先將工作目錄轉(zhuǎn)換到文件所在的目錄,然后再打開文件:14第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

文件打開之后,就可以讀取其中的內(nèi)容。需要調(diào)用f.read(size),該方法讀取若干數(shù)量的數(shù)據(jù)并以字符串形式返回其內(nèi)容,size是可選的數(shù)值,指定字符串長度。如果沒有指定size或者指定為負(fù)數(shù),就會讀取并返回整個(gè)文件。當(dāng)文件大小為當(dāng)前機(jī)器內(nèi)存兩倍時(shí),就會產(chǎn)生問題。反之,會盡可能按比較大的size讀取和返回?cái)?shù)據(jù)。如果到了文件末尾,f.read方法返回一個(gè)空字符串('')。15第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

f.readline方法從文件中讀取單獨(dú)一行,字符串結(jié)尾會自動加上一個(gè)換行符(\n),只有當(dāng)文件最后一行沒有以換行符結(jié)尾時(shí),這一操作才會被忽略。這樣返回值就不會有混淆,如果f.readline返回一個(gè)空字符串,那就表示到達(dá)了文件末尾;如果文件中是一個(gè)空行,就會返回一個(gè)只包含換行符的字符串'\n'。16第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

可以循環(huán)遍歷文件對象來讀取文件中的每一行,這是一種高效、快速,并且代碼簡單的方式。17第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

注意,因?yàn)榉祷氐淖址詭б粋€(gè)換行符(\n),所以用print()輸出時(shí),用一個(gè)空串做結(jié)束符,否則就會多空一行。如果想把文件中的所有行讀到一個(gè)列表中,可以使用list(f)或者f.readlines。

18第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

如果文件file1.txt中只包含英文字符,在任何操作系統(tǒng)中都能正確讀取。如果文件中包含中文,在打開文件時(shí)通常需要指定編碼。再制作一個(gè)文件poem1.txt,內(nèi)容為:劍客.賈島(唐)十年磨一劍,霜刃未曾試。今日把示君,誰有不平事。19第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

打開文件時(shí)指定編碼20第九章數(shù)據(jù)持久化9.1一般文件操作9.1.3

從文件讀

可以看到,打開文件時(shí)并不報(bào)錯(cuò),但試圖讀取時(shí)則出現(xiàn)錯(cuò)誤。解決方法是在打開文件時(shí)指定編碼。21第九章數(shù)據(jù)持久化9.1一般文件操作9.1.4

寫文件

f.write(string)方法將string的內(nèi)容寫入文件,并返回寫入字符的長度。22第九章數(shù)據(jù)持久化9.1一般文件操作9.1.4

寫文件

s的值為"('abc',8)",共10個(gè)字符(8前面有一個(gè)空格)。。

想要寫入其它非字符串內(nèi)容,首先要將它轉(zhuǎn)換為字符串。23第九章數(shù)據(jù)持久化9.1一般文件操作9.1.5文件指針

f.tell方法返回一個(gè)整數(shù),代表文件操作指針在文件中的位置,該整數(shù)計(jì)量了自文件開頭到指針處的字節(jié)數(shù)。如果需要改變文件對象指針的話,使用f.seek(offset,from_what)方法。指針在該操作中從指定的引用位置(from_what)移動offset字節(jié)。from_what值為0表示自文件起始處開始,1表示自當(dāng)前文件指針位置開始,2表示自文件末尾開始。from_what可以忽略,其默認(rèn)值為零,此時(shí)從文件頭開始:24第九章數(shù)據(jù)持久化9.1一般文件操作9.1.5文件指針

在文本文件中(打開時(shí)模式中沒有'b'),只允許從文件頭開始尋找(有個(gè)例外是用seek(0,2)尋找文件的結(jié)尾),而且合法的偏移值只能是f.tell返回的值或者是0,否則可能產(chǎn)生不可預(yù)知的效果。事實(shí)上,如果文件中都是英文字符,也不會出錯(cuò)。25第九章數(shù)據(jù)持久化9.1一般文件操作9.1.5文件指針

但如果文件中有中文,效果則會有所不同。26第九章數(shù)據(jù)持久化9.1一般文件操作9.1.5文件指針

上圖顯示結(jié)果和書上不一致,想想為什么?GBK編碼,一個(gè)漢字占兩個(gè)字節(jié)。UTF-16編碼,通常漢字占兩個(gè)字節(jié),UTF-8編碼是變長編碼,通常漢字占三個(gè)字節(jié)27第九章數(shù)據(jù)持久化9.1一般文件操作9.1.6

預(yù)定義清理行為

使用完一個(gè)文件時(shí),應(yīng)該調(diào)用f.close方法關(guān)閉它,并釋放其占用的所有系統(tǒng)資源。在調(diào)用f.close方法后,試圖再次使用文件對象會失敗。28第九章數(shù)據(jù)持久化9.1一般文件操作9.1.6

預(yù)定義清理行為

粗心的程序員往往會忘記關(guān)閉文件,在多分支程序中尤其容易犯此錯(cuò)誤。用保留字with處理文件對象是個(gè)好習(xí)慣,它的好處在于文件用完后會自動關(guān)閉,就算發(fā)生異常也沒關(guān)系,它是try-finally塊的簡寫。29本章內(nèi)容9.1一般文件操作9.2

CSV文件9.3

JSON文件9.4

SQL數(shù)據(jù)庫操作9.5

peewee

CSV(Comma-SeparatedValues,逗號分隔值)文件是一類純文本文件,通常用于存儲批量數(shù)據(jù)。文件的每行對應(yīng)一條記錄,記錄之間用逗號分隔。本講內(nèi)容30第九章數(shù)據(jù)持久化9.2CSV文件9.2.1

DataFrame與CSV

由于CSV文件的上述結(jié)構(gòu)特點(diǎn),它特別適合存儲大量結(jié)構(gòu)化數(shù)據(jù),因此往往作為數(shù)據(jù)庫表的導(dǎo)出格式文件,也可以方便地與Excel文件等相互轉(zhuǎn)換。具體到Python,由于DataFrame與CSV文件的邏輯結(jié)構(gòu)非常相似,所以它們天然地適合配合使用,DataFrame處理內(nèi)存數(shù)據(jù),CSV保存磁盤數(shù)據(jù)。下面討論DataFrame與CSV之間的交互,請先看下面示例。31第九章數(shù)據(jù)持久化9.2CSV文件9.2.1

DataFrame與CSV

前面三行代碼的含義在8.3節(jié)已經(jīng)介紹,第四行將DataFrame中的數(shù)據(jù)寫到指定目錄下的stock_data.csv文件中。32第九章數(shù)據(jù)持久化9.2CSV文件9.2.1

DataFrame與CSV

打開該文件,其內(nèi)容為33第九章數(shù)據(jù)持久化9.2CSV文件9.2.1

DataFrame與CSV

下面示例演示如何從CSV文件中讀取數(shù)據(jù)。34第九章數(shù)據(jù)持久化9.2CSV文件9.2.2讀CSV文件

并不是所有CSV文件中的數(shù)據(jù)都要讀取到DataFrame中。除上述DataFrame與CSV文件直接交互的方式外,Python也支持使用9.1節(jié)介紹的一般文件操作方法,雖然稍麻煩,但應(yīng)用場合更廣泛。折中的方式是使用Python內(nèi)置的csv模塊,它提供對CSV文件的讀寫操作功能。35第九章數(shù)據(jù)持久化9.2CSV文件9.2.2讀CSV文件

并不是所有CSV文件中的數(shù)據(jù)都要讀取到DataFrame中。除上述DataFrame與CSV文件直接交互的方式外,Python也支持使用9.1節(jié)介紹的一般文件操作方法,雖然稍麻煩,但應(yīng)用場合更廣泛。折中的方式是使用Python內(nèi)置的csv模塊,它提供對CSV文件的讀寫操作功能。36第九章數(shù)據(jù)持久化9.2CSV文件9.2.3寫CSV文件

使用csv模塊的writer對象可以寫CSV文件。37本章內(nèi)容9.1一般文件操作9.2

CSV文件9.3

JSON文件9.4

SQL數(shù)據(jù)庫操作9.5

peewee

JSON(JavaScriptObjectNotation,JavaScript對象標(biāo)記)是一種輕量級的數(shù)據(jù)交換語言,使用文本格式,易于閱讀。本講內(nèi)容38第九章數(shù)據(jù)持久化9.3JSON文件

JSON的規(guī)定字符集是UTF-8,字符串必須使用雙引號,對象的鍵也必須使用雙引號,不能使用單引號。JSON格式的數(shù)組或者對象中,不同的元素用逗號隔開,最后一個(gè)元素后面不能加逗號。例如下面是vn.py(本書案例三)配置文件vt_setting.json簡化后的內(nèi)容。39第九章數(shù)據(jù)持久化9.3JSON文件

可以看出,JSON文件的格式很像Python的字典類型。事實(shí)也是如此,從用途來說,JSON文件也更適合保存字典數(shù)據(jù),如應(yīng)用程序的配置信息(相對來說,CSV更適合保存批量數(shù)據(jù))。JSON也提供保存其它類型數(shù)據(jù)的功能,Python類型與JSON類型的對照見下表。PythonJSONPythonJSONdictobjectTruetruelist,tuplearrayFalsefalsestrstringNonenullint,long,floatnumber

40第九章數(shù)據(jù)持久化9.3JSON文件

Python提供JSON標(biāo)準(zhǔn)庫,主要提供序列化和反序列化功能。序列化(Encoding):將Python數(shù)據(jù)對象轉(zhuǎn)化為JSON字符串,涉及的函數(shù)有兩個(gè),dump()和dumps()。反序列化(Decoding):將JSON格式字符串轉(zhuǎn)化為Python數(shù)據(jù)對象,涉及的函數(shù)有兩個(gè),load()和loads()。41第九章數(shù)據(jù)持久化9.3JSON文件

創(chuàng)建一個(gè)Python文件json_test1.py,代碼為:42第九章數(shù)據(jù)持久化9.3JSON文件

上面示例先創(chuàng)建一個(gè)Python字典對象??梢钥吹?,序列化后的JSON字符串中,引號變成了雙引號,True變成了true;反序列化后又恢復(fù)了原始格式,數(shù)據(jù)類型仍為字典。兩個(gè)函數(shù)都有非常靈活的參數(shù)選擇,dumps()函數(shù)的格式如下:43第九章數(shù)據(jù)持久化9.3JSON文件

obj:表示是要序列化的對象。skipkeys:默認(rèn)為False。如果skipkeys為True,則將跳過不是基本類型(str、int、float、bool和None)的dict鍵。allow_nan:默認(rèn)值為True。如果allow_nan為False,則嚴(yán)格遵守JSON規(guī)范,序列化超出范圍的浮點(diǎn)值(nan和inf)會引發(fā)ValueError。indent:設(shè)置縮進(jìn)格式,默認(rèn)值為None,選擇的是最緊湊格式。如果indent是正整數(shù),則縮進(jìn)indent個(gè)空格;如果indent是一個(gè)字符串(例如"\t"),則該字符串用于縮進(jìn)每個(gè)級別;如果indent為0、負(fù)數(shù)或"",則僅插入換行符。indent是一個(gè)非常有用的參數(shù),它可以使生成的JSON文件格式更易于閱讀。separators:去除分隔符后面的空格,默認(rèn)值為None。default:默認(rèn)值為None??蛇x函數(shù),自定義編碼器,用于處理無法以默認(rèn)方式序列化的對象。sort_keys:默認(rèn)值為False。如果sort_keys為True,則字典的輸出將按鍵值排序。

44第九章數(shù)據(jù)持久化9.3JSON文件

loads()函數(shù)的格式如下:其中:s:包含JSON文檔的str、bytes或bytearray實(shí)例。encoding:指定編碼的格式。object_hook:可選函數(shù),用于實(shí)現(xiàn)自定義解碼器。默認(rèn)為None。parse_float:float字符串解碼器,默認(rèn)為None。parse_int:int字符串解碼器,默認(rèn)為None。parse_constant:nan和inf的解碼器,默認(rèn)為None。45本章內(nèi)容9.1一般文件操作9.2

CSV文件9.3

JSON文件9.4

SQL數(shù)據(jù)庫操作9.5

peewee

數(shù)據(jù)庫技術(shù)是計(jì)算機(jī)科學(xué)的一個(gè)重要分支,內(nèi)容豐富,本節(jié)只能簡單介紹如何使用Python語言對數(shù)據(jù)庫進(jìn)行操作。本講內(nèi)容46第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.1

SQLite介紹

SQLite是一款輕型的數(shù)據(jù)庫,使用C語言開發(fā),通過API接口執(zhí)行所有的數(shù)據(jù)管理功能。SQLite是開源數(shù)據(jù)庫,其源代碼不受版權(quán)限制。SQLite廣受歡迎并在世界范圍內(nèi)被廣泛部署,多種編程語言都內(nèi)置了對SQLite的支持。Python從2.5版本開始默認(rèn)自帶SQLite數(shù)據(jù)庫的操作模塊。47第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.1

SQLite介紹

Python的SQLite模塊sqlite3包含多個(gè)函數(shù),下面簡單介紹其中常用的幾個(gè),只說明功能,不常用的參數(shù)不詳述。48第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.1

SQLite介紹

49第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.1

SQLite介紹

50第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.1

SQLite介紹

51第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

雖然SQLite本身只支持API接口訪問,但得益于SQLite的開放性,人們開發(fā)出了多種SQLite數(shù)據(jù)庫管理工具,如SQLiteStudio等,可以用圖形化的方式對SQLite數(shù)據(jù)庫進(jìn)行管理。本節(jié)只討論如何通過Python編程操作SQLite數(shù)據(jù)庫。52第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

1.連接、關(guān)閉數(shù)據(jù)庫在對數(shù)據(jù)庫進(jìn)行操作之前,首先要連接數(shù)據(jù)庫。操作完成之后,要關(guān)閉數(shù)據(jù)庫連接。創(chuàng)建一個(gè)Python文件db_test1.py,代碼為:53第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

2.創(chuàng)建表在數(shù)據(jù)庫中,數(shù)據(jù)存儲在數(shù)據(jù)庫表(Table)中,操作數(shù)據(jù)之前要先創(chuàng)建數(shù)據(jù)庫表。創(chuàng)建一個(gè)Python文件db_test2.py,代碼為:54第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

3.插入數(shù)據(jù)下面示例向表中插入幾條記錄。創(chuàng)建一個(gè)Python文件db_test3.py,代碼為:55第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

4.查詢數(shù)據(jù)查詢是最常用的數(shù)據(jù)庫操作,查詢數(shù)據(jù)使用SELECT語句。創(chuàng)建一個(gè)Python文件db_test4.py,代碼為:56第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

執(zhí)行結(jié)果:本例沒有使用fetchone()函數(shù),而是使用Python特有的迭代方法,返回的row是一個(gè)元組,可以通過索引取特定的字段值。57第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

5.修改數(shù)據(jù)修改數(shù)據(jù)使用UPDATE語句。創(chuàng)建一個(gè)Python文件db_test5.py,代碼為:58第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

5.修改數(shù)據(jù)修改數(shù)據(jù)使用UPDATE語句。創(chuàng)建一個(gè)Python文件db_test5.py,代碼為:執(zhí)行結(jié)果:Zhang,28,20000.0可以看到,Zhang的工資被修改為20000。59第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

6.刪除數(shù)據(jù)刪除數(shù)據(jù)使用DELETE語句。創(chuàng)建一個(gè)Python文件db_test6.py,代碼為:60第九章數(shù)據(jù)持久化9.4SQL數(shù)據(jù)庫操作9.4.2

操作SQLite數(shù)據(jù)庫

執(zhí)行結(jié)果:Zhang,28,20000.0Li,30,18000.0可以看到,Wang已經(jīng)不存在了。61本章內(nèi)容9.1一般文件操作9.2

CSV文件9.3

JSON文件9.4

SQL數(shù)據(jù)庫操作9.5

peewee

peewee是一個(gè)簡單小巧的PythonORM,它非常容易學(xué)習(xí),并且使用起來很直觀。它支持Python2和Python3,支持的數(shù)據(jù)庫包括SQLite、MySQL和PostgreSQL。本講內(nèi)容62第九章數(shù)據(jù)持久化9.5peewee9.4.2

操作SQLite數(shù)據(jù)庫

1.連接數(shù)據(jù)庫,定義表創(chuàng)建一個(gè)Python文件peewee_test1.py,代碼為:63第九章數(shù)據(jù)持久化9.5peewee9.4.2

操作SQLite數(shù)據(jù)庫

通常數(shù)據(jù)庫中不會只有一個(gè)表,當(dāng)有多個(gè)表時(shí),更專業(yè)的做法是先定義一個(gè)繼承自Model的類,作為所有表的基類。在該類中做好通用的設(shè)置,就不必在每個(gè)表中設(shè)置了。下面示例除使用基類外,還展示了peewee的其它一些特性,更全面的說明請自行參考相關(guān)資料。創(chuàng)建一個(gè)Python文件peewee_school.py,代碼為:64第九章

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論