




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第九章
關(guān)系型數(shù)據(jù)庫(kù)連接與訪問(wèn)《數(shù)據(jù)采集與處理:基于Python》2024/5/1112024/5/112教學(xué)目標(biāo)本章學(xué)習(xí)目標(biāo)1.了解關(guān)系型數(shù)據(jù)庫(kù)的基本概念、原理、知識(shí)和常用SQL操作,理解關(guān)系型數(shù)據(jù)庫(kù)的ACID特性和關(guān)系模型結(jié)構(gòu);2.了解嵌入式關(guān)系型數(shù)據(jù)庫(kù)SQLite的特點(diǎn)和訪問(wèn)方式,掌握基于Python訪問(wèn)SQLite數(shù)據(jù)庫(kù)的操作方法;3.了解網(wǎng)絡(luò)關(guān)系型數(shù)據(jù)庫(kù)MySQL的特點(diǎn)和訪問(wèn)方式,掌握基于Python模塊pymysql、sqlalchemy及pandas訪問(wèn)MySQL數(shù)據(jù)庫(kù)的操作方法。本章提綱1.關(guān)系型數(shù)據(jù)庫(kù)概述2.SQLite數(shù)據(jù)庫(kù)連接與訪問(wèn)3.MySQL數(shù)據(jù)庫(kù)連接與訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)概述2024/5/113關(guān)系型數(shù)據(jù)庫(kù)概述到目前為止,我們主要使用平面表來(lái)存儲(chǔ)和處理數(shù)據(jù)。然而,現(xiàn)實(shí)世界中的大多數(shù)結(jié)構(gòu)化數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)庫(kù)中,特別是關(guān)系型數(shù)據(jù)庫(kù)。其他類型的數(shù)據(jù)庫(kù)有特定的優(yōu)點(diǎn),比如性能優(yōu)異(如NoSQL),適用于圖形(圖形數(shù)據(jù)庫(kù),如Neo4j),或者與內(nèi)存中的OO數(shù)據(jù)結(jié)構(gòu)(如面向?qū)ο髷?shù)據(jù)庫(kù))兼容。關(guān)系型數(shù)據(jù)庫(kù)及其實(shí)現(xiàn)(即關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS))仍然是存儲(chǔ)企業(yè)數(shù)據(jù)的主要方式。關(guān)系型數(shù)據(jù)庫(kù)簡(jiǎn)介1.什么是關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù),同時(shí)也是一組擁有正式描述的表格。該種形式的表格的實(shí)質(zhì)是裝載數(shù)據(jù)項(xiàng)的特殊集合體,這些表格中的數(shù)據(jù)能以許多不同的方式存取或重新召集而不需要重新組織數(shù)據(jù)庫(kù)表格。每個(gè)表格(有時(shí)稱為一個(gè)關(guān)系)包含用列表示的一個(gè)或多個(gè)數(shù)據(jù)種類。每行包含唯一的數(shù)據(jù)實(shí)體,這些數(shù)據(jù)是被列定義的種類。當(dāng)創(chuàng)建一個(gè)關(guān)系型數(shù)據(jù)庫(kù)時(shí),可以定義數(shù)據(jù)列的可能值的范圍和可能應(yīng)用于某個(gè)數(shù)據(jù)值的進(jìn)一步約束。結(jié)構(gòu)化查詢語(yǔ)言(structuredquerylanguage,SQL)是標(biāo)準(zhǔn)用戶和應(yīng)用程序到關(guān)系型數(shù)據(jù)庫(kù)的接口,其優(yōu)勢(shì)是容易擴(kuò)充,在最初的數(shù)據(jù)庫(kù)創(chuàng)建之后,一個(gè)新的數(shù)據(jù)種類能被添加而不需要修改所有的現(xiàn)有應(yīng)用軟件。主流的關(guān)系型數(shù)據(jù)庫(kù)有Oracle、DB2、SQLServer、Sybase、MySQL等。關(guān)系型數(shù)據(jù)庫(kù)簡(jiǎn)介關(guān)系型數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)應(yīng)用的主流,許多數(shù)據(jù)庫(kù)管理系統(tǒng)的數(shù)據(jù)模型都是基于關(guān)系數(shù)據(jù)模型開(kāi)發(fā)的。關(guān)系數(shù)據(jù)模型包括關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和數(shù)據(jù)完整性約束三個(gè)要素。關(guān)系數(shù)據(jù)結(jié)構(gòu)是二維表;常用的關(guān)系操作包括查詢、插入、刪除、修改等;而數(shù)據(jù)完整性約束包括實(shí)體完整性、參照完整性及用戶定義的完整性等。關(guān)系型數(shù)據(jù)庫(kù)分為兩類:一類是桌面數(shù)據(jù)庫(kù),例如Access、FoxPro和dBase等;另一類是客戶端/服務(wù)器(C/S)數(shù)據(jù)庫(kù),例如SQLServer、Oracle和Sybase等。一般而言,桌面數(shù)據(jù)庫(kù)用于小型、單機(jī)的應(yīng)用程序,它不需要網(wǎng)絡(luò)和服務(wù)器,實(shí)現(xiàn)起來(lái)比較方便,但它只提供數(shù)據(jù)的存取功能??蛻舳?服務(wù)器數(shù)據(jù)庫(kù)主要適用于大型、多用戶的數(shù)據(jù)庫(kù)管理系統(tǒng),應(yīng)用程序包括兩部分:一部分駐留在客戶機(jī)上,用于向用戶顯示信息及實(shí)現(xiàn)與用戶的交互;另一部分駐留在服務(wù)器中,用于實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作和對(duì)數(shù)據(jù)的計(jì)算處理。關(guān)系型數(shù)據(jù)庫(kù)簡(jiǎn)介2.關(guān)系型數(shù)據(jù)庫(kù)事務(wù)與本地文本文件或Web爬取不同,一般不能直接訪問(wèn)公共數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)功能強(qiáng)大,但使用起來(lái)也有一些困難。更有可能的情況是,我們與之交互的API在幕后由關(guān)系型數(shù)據(jù)庫(kù)提供動(dòng)力,從而隱藏了復(fù)雜性。此外,雖然主要考慮的是讀取數(shù)據(jù),但數(shù)據(jù)庫(kù)也可以寫(xiě)入,這就增加了濫用的可能性。因此,對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀/寫(xiě)訪問(wèn)的最有可能的情況是,數(shù)據(jù)庫(kù)是由用戶或用戶所在的組織管理的。關(guān)系型數(shù)據(jù)庫(kù)的事務(wù)(transaction)遵循ACID特性。事務(wù)和現(xiàn)實(shí)世界中的交易類似,它有如下四個(gè)特性。(1)A:atomicity(原子性)。原子性是指事務(wù)里的所有操作要么全部做完,要么都不做,事務(wù)成功的條件是事務(wù)里的所有操作都成功,只要有一個(gè)操作失敗,整個(gè)事務(wù)就失敗,需要回滾。例如銀行轉(zhuǎn)賬,從A賬戶轉(zhuǎn)100元至B賬戶,分為兩個(gè)步驟:1)從A賬戶取100元;2)將100元存至B賬戶。這兩步要么一起完成,要么均不完成,如果只完成第一步,而第二步失敗,則錢會(huì)莫名其妙少100元。(2)C:consistency(一致性)。一致性是指數(shù)據(jù)庫(kù)要一直處于一致的狀態(tài),事務(wù)的運(yùn)行不會(huì)改變數(shù)據(jù)庫(kù)原本的一致性約束。例如,現(xiàn)有完整性約束a+b=10,如果一個(gè)事務(wù)改變了a,那么必須改變b,使得事務(wù)結(jié)束后依然滿足a+b=10,否則事務(wù)失敗。關(guān)系型數(shù)據(jù)庫(kù)簡(jiǎn)介(3)I:isolation(隔離性)。隔離性是指并發(fā)的事務(wù)之間不會(huì)互相影響,如果一個(gè)事務(wù)要訪問(wèn)的數(shù)據(jù)正在被另一個(gè)事務(wù)修改,只要另一個(gè)事務(wù)未提交,它所訪問(wèn)的數(shù)據(jù)就不受未提交事務(wù)的影響。例如,現(xiàn)在有一筆交易是從A賬戶轉(zhuǎn)100元至B賬戶,在這筆交易還未完成的情況下,如果此時(shí)B查詢自己的賬戶,則看不到新增加的100元。(4)D:durability(持久性)。持久性是指一旦事務(wù)提交,它所做的修改將會(huì)永久地保存在數(shù)據(jù)庫(kù)中,即使出現(xiàn)宕機(jī),也不會(huì)丟失。關(guān)系型數(shù)據(jù)庫(kù)簡(jiǎn)介3.關(guān)系模型結(jié)構(gòu)(1)關(guān)系(表文件)。關(guān)系型數(shù)據(jù)庫(kù)采用二維表格來(lái)存儲(chǔ)數(shù)據(jù),是一種按行與列排列的具有相關(guān)信息的邏輯組,它類似于Excel工作表。一個(gè)數(shù)據(jù)庫(kù)可以包含任意多張數(shù)據(jù)表。通俗地說(shuō),一個(gè)關(guān)系對(duì)應(yīng)一張表。(2)元組(記錄)。表中的一行即為一個(gè)元組,或稱為一條記錄。(3)屬性(字段)。數(shù)據(jù)表中的每一列稱為一個(gè)字段。表是由其包含的各種字段定義的,每個(gè)字段描述了它所包含的數(shù)據(jù)的意義。數(shù)據(jù)表的設(shè)計(jì)實(shí)際上就是對(duì)字段的設(shè)計(jì)。創(chuàng)建數(shù)據(jù)表時(shí),為每個(gè)字段分配一個(gè)數(shù)據(jù)類型,定義它們的數(shù)據(jù)長(zhǎng)度和其他屬性。字段可以包含各種字符、數(shù)字,甚至圖形。(4)屬性值。行和列的交叉位置表示某個(gè)屬性值,如“數(shù)據(jù)采集與處理:基于Python”就是課程名稱的屬性值。(5)主鍵。主鍵(primarykey)也稱主碼或主關(guān)鍵字,是表中唯一確定元組的數(shù)據(jù)。主鍵用來(lái)確保表中記錄的唯一性,可以是一個(gè)字段或多個(gè)字段,常用作一個(gè)表的索引字段。每條記錄的主鍵都是不同的,因而可以唯一地標(biāo)識(shí)一條記錄。(6)域。屬性的取值范圍,如課程學(xué)分屬性的取值范圍是0~10之間的整數(shù)。(7)關(guān)系模式。關(guān)系的描述稱為關(guān)系模式。關(guān)系模式一般表示為:關(guān)系名(屬性1,屬性2,…,屬性n)。例如:課程(課程號(hào),課程名稱,學(xué)分,任課老師)。關(guān)系模式這種簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)能夠表達(dá)豐富的語(yǔ)義,描述現(xiàn)實(shí)世界的實(shí)體以及實(shí)體間的各種關(guān)系。關(guān)系型數(shù)據(jù)庫(kù)操作1.SQL語(yǔ)言SQL是執(zhí)行增刪改查事務(wù)的特定于域的語(yǔ)言。我們將主要研究使用SQL聚合數(shù)據(jù)的查詢。下面是一個(gè)非常簡(jiǎn)單的查詢示例:這個(gè)語(yǔ)句選擇并返回products表中的所有行。我們可以使用“WHERE”子句限制要檢索的行數(shù),下面的語(yǔ)句將檢索價(jià)格高于100的所有行:SELECT*FROMproductsSELECT*FROMproductsWHEREPrice>100關(guān)系型數(shù)據(jù)庫(kù)操作2.關(guān)系型數(shù)據(jù)庫(kù)操作流程以常用的MySQL數(shù)據(jù)庫(kù)為例,訪問(wèn)MySQL數(shù)據(jù)庫(kù)的基本流程如圖9-2所示。訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)首先要?jiǎng)?chuàng)建對(duì)應(yīng)數(shù)據(jù)庫(kù)的連接(connect);然后創(chuàng)建游標(biāo)(cursor),通過(guò)游標(biāo)對(duì)象執(zhí)行數(shù)據(jù)庫(kù)的具體操作,如數(shù)據(jù)的增、刪、改、查等;操作完成后,需要關(guān)閉游標(biāo);最后關(guān)閉數(shù)據(jù)庫(kù)連接以釋放資源。SQLite數(shù)據(jù)庫(kù)連接與訪問(wèn)2024/5/1112SQLite數(shù)據(jù)庫(kù)簡(jiǎn)介大多數(shù)數(shù)據(jù)庫(kù)管理系統(tǒng)都是用客戶端/服務(wù)器系統(tǒng)實(shí)現(xiàn)的,即數(shù)據(jù)庫(kù)托管在一個(gè)專用服務(wù)器上,多個(gè)用戶可以在該服務(wù)器上讀寫(xiě)數(shù)據(jù),例如PostgreSQL、MySQL和Oracle。這些數(shù)據(jù)庫(kù)管理系統(tǒng)的處理速度快,可以同時(shí)處理多個(gè)用戶的請(qǐng)求和操作,不會(huì)引起沖突。但是它們需要安裝服務(wù)器系統(tǒng),所以我們使用SQLite,它為單個(gè)用戶工作并將整個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)在單個(gè)文件中。SQLite廣泛用于單用戶用例。雖然這些不同的數(shù)據(jù)庫(kù)具有不同的特性和性能特征,但它們都支持SQL,因此在這里學(xué)到的技能可以廣泛使用。SQLite是一種嵌入式關(guān)系型數(shù)據(jù)庫(kù)軟件,即數(shù)據(jù)庫(kù)是一個(gè)本地文件,自身并沒(méi)有單獨(dú)的伺服軟件,但提供了相應(yīng)的API,以便訪問(wèn)該數(shù)據(jù)庫(kù)文件。另外,也可以下載安裝SQLiteExpertPersonal軟件查看數(shù)據(jù)庫(kù)內(nèi)容,或者使用通用的關(guān)系型數(shù)據(jù)庫(kù)管理客戶端軟件進(jìn)行管理,如Navicat軟件等。Python訪問(wèn)SQLite操作本書(shū)使用SQLite示例數(shù)據(jù)庫(kù)資源。SQLite數(shù)據(jù)庫(kù)模式和關(guān)系表示例如圖所示。Python訪問(wèn)SQLite操作數(shù)據(jù)庫(kù)示例說(shuō)明如下:●employees表存儲(chǔ)員工數(shù)據(jù),如員工id、姓、名等。它還包括一個(gè)名為“ReportsTo”的字段,用于指定員工向誰(shuí)報(bào)告。●customers表存儲(chǔ)客戶數(shù)據(jù)。●invoices和invoice_items表存儲(chǔ)發(fā)票數(shù)據(jù)。invoices表存儲(chǔ)發(fā)票頭數(shù)據(jù),而invoice_items表存儲(chǔ)發(fā)票明細(xì)項(xiàng)數(shù)據(jù)。●artists表存儲(chǔ)藝術(shù)家數(shù)據(jù),只包含藝術(shù)家id和姓名?!馻lbums表存儲(chǔ)專輯曲目列表數(shù)據(jù)。每張專輯屬于一位藝術(shù)家,而一位藝術(shù)家可能有多張專輯。●media_types表存儲(chǔ)媒體類型數(shù)據(jù),如MPEG音頻文件、AAC音頻文件等?!駁enres表存儲(chǔ)音樂(lè)類型數(shù)據(jù),如搖滾、爵士和重金屬等。●tracks表存儲(chǔ)歌曲數(shù)據(jù),每個(gè)曲目(對(duì)應(yīng)一首音樂(lè))屬于一張專輯(唱片)?!駊laylists和playlist_track表:playlists表存儲(chǔ)有關(guān)播放列表的數(shù)據(jù),每個(gè)播放列表包含了曲目,每個(gè)音軌可能屬于多個(gè)播放列表。播放列表playlists和曲目表tracks之間的關(guān)系是多對(duì)多的;playlist_track表用于反映這種關(guān)系。圖9-3突出顯示了每個(gè)表中的主鍵以及它們之間的關(guān)系,使用外鍵彼此連接。注意,“員工”有一個(gè)自我引用,以捕獲報(bào)告給誰(shuí)(ReportsTo)的關(guān)系。Python訪問(wèn)SQLite操作Python中的sqlite3模塊可用于操作SQLite數(shù)據(jù)庫(kù),示例程序如下:運(yùn)行結(jié)果如下:這里使用游標(biāo)來(lái)訪問(wèn)數(shù)據(jù)。要在執(zhí)行SELECT語(yǔ)句后檢索數(shù)據(jù),可以將游標(biāo)視為迭代器,調(diào)用游標(biāo)的fetchone函數(shù)來(lái)檢索單個(gè)匹配行,或者調(diào)用fetchall函數(shù)來(lái)獲取匹配行的列表。下面的示例程序講解了如何使用它作為迭代器。importpandasaspdimportsqlite3assq#導(dǎo)入sqlite3模塊conn=sq.connect("./chinook.db")#連接到數(shù)據(jù)庫(kù)c=conn.cursor() #獲取數(shù)據(jù)庫(kù)的操作游標(biāo)c.execute("SELECT*FROMalbums") #執(zhí)行SQL語(yǔ)句#獲取并打印結(jié)果中的一行print(c.fetchone()) #游標(biāo)cursor是一個(gè)迭代器,可以循環(huán)讀取(1,ForThoseAboutToRockWeSaluteYou,1)forrowinc:if(row[0]<10):#限制輸出行數(shù)print(row)c.execute("SELECT*FROMalbums")c.fetchall() #一次獲取所有記錄pandas與關(guān)系型數(shù)據(jù)庫(kù)訪問(wèn)對(duì)于關(guān)系型數(shù)據(jù)庫(kù)表的讀寫(xiě)操作,pandas提供了更簡(jiǎn)易的方法,可以分別使用read_sql和to_sql函數(shù)對(duì)關(guān)系型數(shù)據(jù)庫(kù)表進(jìn)行讀寫(xiě)操作。示例程序如下:#類似于read_csv函數(shù)pd.read_sql("""SELECT*FROMalbums""",conn).head()#單個(gè)表訪問(wèn)#多表內(nèi)連接查詢?cè)L問(wèn)df=pd.read_sql("""SELECTtrackid,asTrack,albums.titleasAlbumFROMtracksINNERJOINalbumsONalbums.albumid=tracks.albumid""",conn).head(30)df.to_sql(name="al_track",con=conn,if_exists="replace")MySQL數(shù)據(jù)庫(kù)連接與訪問(wèn)2024/5/1118MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介1.什么是MySQLMySQL是一個(gè)小型的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由于該軟件體積小、運(yùn)行速度快、操作方便,目前廣泛應(yīng)用于中小企業(yè)網(wǎng)站的后臺(tái)。在本地計(jì)算機(jī)上安裝好MySQL后,在Windows命令行中輸入“netstartmysql”即可啟動(dòng)該程序。若要進(jìn)入MySQL可執(zhí)行程序目錄,輸入命令“mysql-uroot”即可進(jìn)入MySQL中的命令行模式。MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介2.MySQL基本操作MySQL數(shù)據(jù)庫(kù)的基本操作主要分為操作MySQL數(shù)據(jù)庫(kù)和操作MySQL數(shù)據(jù)表,對(duì)應(yīng)定義數(shù)據(jù)庫(kù)或數(shù)據(jù)表的操作語(yǔ)句稱為數(shù)據(jù)定義語(yǔ)言(datadefinitionlanguage,DDL),而對(duì)應(yīng)增、刪、改、查的操作語(yǔ)句則稱為數(shù)據(jù)操縱語(yǔ)言(datamanipulationlanguage,DML)。MySQL數(shù)據(jù)庫(kù)的基本操作主要有以下幾種:(1)創(chuàng)建數(shù)據(jù)庫(kù):CREATEDATABASE數(shù)據(jù)庫(kù)名。(2)查看數(shù)據(jù)庫(kù):SHOWDATABASES。(3)選擇指定數(shù)據(jù)庫(kù):USE數(shù)據(jù)庫(kù)名。(4)刪除數(shù)據(jù)庫(kù):DROPDATABASE數(shù)據(jù)庫(kù)名。MySQL數(shù)據(jù)表的基本操作主要有以下幾種:(1)創(chuàng)建數(shù)據(jù)表:CREATETABLE數(shù)據(jù)表名。(2)查看數(shù)據(jù)表:SHOWTABLES。(3)查看數(shù)據(jù)表結(jié)構(gòu):DESCRIBE數(shù)據(jù)表名。(4)向數(shù)據(jù)表中添加記錄:INSERTINTO數(shù)據(jù)表名VALUES。(5)修改數(shù)據(jù)表中的記錄:UPDATE數(shù)據(jù)表名。(6)查詢數(shù)據(jù)表記錄:SELECT……。Python訪問(wèn)MySQL操作在Python3中可以使用pymysql庫(kù)來(lái)實(shí)現(xiàn)這一功能。pymysql庫(kù)是一個(gè)純Python庫(kù),可以直接安裝使用,安裝時(shí)可在Windows命令行中輸入以下命令:pipinstallpymysqlPython訪問(wèn)MySQL操作在Python中訪問(wèn)MySql數(shù)據(jù)庫(kù)和用C++訪問(wèn)數(shù)據(jù)庫(kù)方法基本相同,主要有以下步驟:(1)通過(guò)pymysql庫(kù)的方法,與MySql數(shù)據(jù)庫(kù)建立連接。(2)編寫(xiě)SQL語(yǔ)句。(3)通過(guò)連接的返回的數(shù)據(jù)庫(kù)對(duì)象,調(diào)用相應(yīng)方法執(zhí)行SQL語(yǔ)句。(4)讀取數(shù)據(jù)庫(kù)返回的數(shù)據(jù)(即緩存區(qū)中的數(shù)據(jù))。(5)對(duì)相應(yīng)的返回?cái)?shù)據(jù)進(jìn)行操作。(6)關(guān)閉數(shù)據(jù)庫(kù)對(duì)象,關(guān)閉數(shù)據(jù)庫(kù)。MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介使用pymysql模塊訪問(wèn)數(shù)據(jù)庫(kù)的一般流程如下:(1)導(dǎo)入模塊。importpymysql(2)創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象。con=pymysql.connect(host,port,user,password,database,charset)(3)使用數(shù)據(jù)庫(kù)連接對(duì)象調(diào)用cursor函數(shù)創(chuàng)建游標(biāo)。cur=con.cursor()注意,創(chuàng)建游標(biāo)時(shí)會(huì)默認(rèn)開(kāi)啟一個(gè)隱式的事務(wù),在執(zhí)行增、刪、改的操作后需要提交(commit)事務(wù),如果不提交,默認(rèn)為事務(wù)回滾(rollback),即操作并沒(méi)有生效;如果操作失敗,可調(diào)用rollback函數(shù)回滾撤銷事務(wù)。(4)編寫(xiě)SQL語(yǔ)句字符串,并執(zhí)行SQL語(yǔ)句。sql=增刪改查的SQL語(yǔ)句cur.execute(sql,參數(shù))execute函數(shù)可以使用元組(tuple)、列表(list)、字典(dict)這三種方式傳參,一般使用元組或列表的方式。(5)當(dāng)需要顯示查詢后的結(jié)果時(shí),可以通過(guò)fetchone、fetchmany、fetchall函數(shù)獲取查詢后的結(jié)果元組。MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介(6)提交事務(wù)并關(guān)閉游標(biāo)。對(duì)數(shù)據(jù)進(jìn)行增、刪、改后需要提交事務(wù),否則所有操作無(wú)效。mit()cur.close()(7)關(guān)閉數(shù)據(jù)庫(kù)連接。con.close()MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介2.MySQL訪問(wèn)相關(guān)模塊sqlalchemysqlalchemy是Python的一款開(kāi)源軟件,提供了SQL工具包及對(duì)象關(guān)系映射(objectrelationalmapping,ORM)工具,使用MIT許可證發(fā)行。sqlalchemy首次發(fā)行于2006年2月,并迅速成為Python社區(qū)最廣泛使用的ORM工具之一,不亞于django內(nèi)嵌的ORM框架。其安裝方式如下:pipinstallsqlalchemy或condainstallsqlalchemysqlalchemy操作數(shù)據(jù)庫(kù)的步驟與其他模塊基本類似,只是涉及具體的大型網(wǎng)絡(luò)關(guān)系型數(shù)據(jù)庫(kù)時(shí),需要下載對(duì)應(yīng)的數(shù)據(jù)庫(kù)引擎,即對(duì)應(yīng)數(shù)據(jù)庫(kù)模塊。如連接MySQL時(shí)需要同時(shí)下載安裝pymysql庫(kù)。sqlalchemy的使用方法和操作如圖9-4所示。MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介連接MySQL數(shù)據(jù)庫(kù)的字符串URL形式為:db_url="mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8"通過(guò)create_eng
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)聚維西同碘溶液數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)欄桿座插牌市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)可鎖重型插銷市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025━2030年高級(jí)枕套行業(yè)深度研究報(bào)告
- 2025至2030年中國(guó)人生長(zhǎng)激素市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025━2030年中國(guó)激長(zhǎng)素項(xiàng)目投資可行性研究報(bào)告
- 2025━2030年中國(guó)加替沙星注射液項(xiàng)目投資可行性研究報(bào)告
- 2025-2035年全球及中國(guó)陽(yáng)性材料鑒定(PMI)行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展前景研究報(bào)告
- 2025-2035年全球及中國(guó)硅酮添加劑行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展前景研究報(bào)告
- 2025-2035年全球及中國(guó)橡膠龍門起重機(jī)行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展前景研究報(bào)告
- 屋頂分布式光伏發(fā)電EPC項(xiàng)目 投標(biāo)方案(技術(shù)方案)
- 網(wǎng)約車停運(yùn)損失費(fèi)起訴狀模板
- 中國(guó)急性缺血性卒中診治指南(2023)解讀
- JJG(交通) 187-2023 水泥混凝土攪拌機(jī)
- A型肉毒素治療知情同意書(shū) 注射知情同意書(shū)
- 混凝土采購(gòu)項(xiàng)目整體供貨方案
- 血液透析導(dǎo)管溶栓及護(hù)理
- 公司外聘人員管理制度
- 慢病聯(lián)合用藥病
- 蘭州拉面-模板參考
- 武漢市2024屆高中畢業(yè)生二月調(diào)研考試(二調(diào))英語(yǔ)試卷(含答案)
評(píng)論
0/150
提交評(píng)論