《Python編程入門與實踐(微視頻版)》課件 第09章 Python訪問數(shù)據(jù)庫_第1頁
《Python編程入門與實踐(微視頻版)》課件 第09章 Python訪問數(shù)據(jù)庫_第2頁
《Python編程入門與實踐(微視頻版)》課件 第09章 Python訪問數(shù)據(jù)庫_第3頁
《Python編程入門與實踐(微視頻版)》課件 第09章 Python訪問數(shù)據(jù)庫_第4頁
《Python編程入門與實踐(微視頻版)》課件 第09章 Python訪問數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

使用簡單的純文本文件只能實現(xiàn)有限的功能。如果需要處理的數(shù)據(jù)量龐大且易于程序員理解,選擇相對標準化的數(shù)據(jù)庫(Database)會更為合適。Python支持多種數(shù)據(jù)庫,包括Sybase、SAP、Oracle、SQLServer和SQLite等。本章將主要介紹數(shù)據(jù)庫的基本概念和結(jié)構(gòu)化查詢語言SQL,并講解如何使用Python自帶的輕量級關(guān)系型數(shù)據(jù)庫SQLite。第9章Python訪問數(shù)據(jù)庫9.1數(shù)據(jù)庫基礎(chǔ)數(shù)據(jù)庫技術(shù)產(chǎn)生于20世紀60年代后期,主要研究信息的存儲、組織、查詢使用等技術(shù),其主要目的是有效地管理和存取大量的數(shù)據(jù)資源。數(shù)據(jù)庫技術(shù)一直隨著計算機的發(fā)展不斷進步,作為計算機軟件科學(xué)中的一個十分活躍而重要的獨立分支,已經(jīng)形成了一整套數(shù)據(jù)庫理論與技術(shù)體系。9.1.1數(shù)據(jù)庫概念9.1.2關(guān)系型數(shù)據(jù)庫9.1.3數(shù)據(jù)庫和Python接口程序9.1.1數(shù)據(jù)庫概念數(shù)據(jù)庫(Database)是數(shù)據(jù)的集合,它將大量數(shù)據(jù)按照特定的方式組織和存儲,以便于管理和維護。數(shù)據(jù)庫的主要特征包括: 數(shù)據(jù)以特定方式組織和存儲。 支持多個用戶的共享訪問。 盡量減少數(shù)據(jù)冗余。 數(shù)據(jù)集合與程序相互獨立。與文件系統(tǒng)相比,數(shù)據(jù)庫管理系統(tǒng)為用戶提供了安全、高效和快速的數(shù)據(jù)檢索與修改能力。由于數(shù)據(jù)庫管理系統(tǒng)與應(yīng)用程序文件獨立存在,它可以被多個應(yīng)用程序共享,從而實現(xiàn)數(shù)據(jù)的共享和重用。9.1.2關(guān)系型數(shù)據(jù)庫數(shù)據(jù)庫可以分為層次型數(shù)據(jù)庫、對象型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫,其中關(guān)系型數(shù)據(jù)庫是當(dāng)前的主流類型。關(guān)系型數(shù)據(jù)庫不僅描述數(shù)據(jù)本身,還描述數(shù)據(jù)之間的關(guān)系。在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)以表的形式組織,一個數(shù)據(jù)庫通常包含多個表,例如一個學(xué)生信息數(shù)據(jù)庫可能包括學(xué)生表、班級表和學(xué)校表等。通過在表之間建立關(guān)系,可以將不同表中的數(shù)據(jù)關(guān)聯(lián)起來,以便用戶進行查詢和使用。關(guān)系型數(shù)據(jù)庫中常用的術(shù)語如下。 關(guān)系:可以理解為一張二維表,每個關(guān)系都有一個名稱,即表名。 屬性:可以理解為二維表中的一列,通常稱為字段。 元組:可以理解為二維表中的一行,通常稱為記錄。 域:屬性的取值范圍,即數(shù)據(jù)庫中某一列的取值范圍。 關(guān)鍵字:一組可以唯一標識元組的屬性,稱為主鍵,可以由一個或多個列組成。9.1.3數(shù)據(jù)庫和Python接口程序在Python中添加數(shù)據(jù)庫支持,可以極大地增強Python應(yīng)用的功能。通過數(shù)據(jù)庫接口,Python程序可以直接訪問數(shù)據(jù)庫。過去,針對不同類型的數(shù)據(jù)庫,人們編寫了各種數(shù)據(jù)庫接口程序,但這些接口的功能和接口方式往往不兼容。因此,使用這些接口的程序需要根據(jù)選擇的接口模塊進行自定義,且當(dāng)接口模塊發(fā)生變化時,應(yīng)用程序的代碼也必須隨之更新。DB-API規(guī)范為不同的數(shù)據(jù)庫提供了一致的訪問接口,使得在不同數(shù)據(jù)庫之間移植代碼變得更加容易。DB-API是一個規(guī)范,定義了一系列必需的對象和數(shù)據(jù)庫操作方式,確保不同底層數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫接口程序之間具有統(tǒng)一的訪問方式。通過遵循該規(guī)范,Python程序能夠以一致的方式訪問各種數(shù)據(jù)庫。要從Python訪問數(shù)據(jù)庫,需要借助接口程序。接口程序是一個Python模塊,它提供了數(shù)據(jù)庫客戶端(通常是用C語言編寫)的接口,供Python程序訪問數(shù)據(jù)庫。所有的Python數(shù)據(jù)庫接口程序都在一定程度上遵循PythonDB-API規(guī)范,從而確保跨數(shù)據(jù)庫操作的兼容性和一致性。9.2結(jié)構(gòu)化查詢語言SQL數(shù)據(jù)庫的命令和查詢操作需要通過SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)來執(zhí)行。SQL是一種通用的關(guān)系型數(shù)據(jù)庫操作語言,用于查詢、定義、操控和控制數(shù)據(jù)庫。作為一種非過程化語言,SQL使得用戶能夠通過聲明性語句來與數(shù)據(jù)庫進行交互,而無需關(guān)注具體的執(zhí)行過程。以下是一些常用SQL命令的示例。9.2.1數(shù)據(jù)表的建立(CREATETABLE)和刪除(DROP)9.2.2查詢語句SELCET9.2.3添加記錄語句INSERTINTO9.2.4更新語句UPDATE9.2.5刪除語句DELETE9.2.1數(shù)據(jù)表的建立(CREATETABLE)和刪除(DROP)CREATETABLE語句用于在數(shù)據(jù)庫中創(chuàng)建新表。其語法格式如下:CREATETABLE表名稱(

列名稱1數(shù)據(jù)類型,

列名稱2數(shù)據(jù)類型,

列名稱3數(shù)據(jù)類型,...)9.2.2查詢語句SELCETSELECT語句用于從表中選擇數(shù)據(jù),查詢結(jié)果被存儲在一個結(jié)果集(即結(jié)果表)中。查詢語句的基本語法如下:SELECT字段列表FROM表名WHERE查詢條件GROUPBY分組字段ORDERBY字段[ASC|DESC];SELECT語句包括字段列表、FROM子句和WHERE子句。它們分別指定要查詢的列、查詢的表或視圖,以及查詢條件。字段表WHERE子句數(shù)據(jù)分組(GROUPBY)查詢結(jié)果排序(ORDERBY)9.2.3添加記錄語句INSERTINTOINSERTINTO語句用于向表中插入新的記錄。其基本語法格式為:INSERTINTO數(shù)據(jù)表(字段1,字段2,字段3,...)VALUES(值1,值2,值3,...);【例9-13】在students表中添加一條記錄。INSERTINTOstudents(stuNumber,stuName,age,sex,score,address,city)VALUES('2025005','王燕',19,'男',92,'Changjiang12','Nanjing’);也可以使用簡化形式,省略字段名,按照數(shù)據(jù)表中字段的順序插入:INSERTINTOstudentsVALUES('2025005','王燕',19,'男',92,'Changjiang12','Nanjing’);當(dāng)不指定字段名時,INSERTINTO會按照數(shù)據(jù)表中字段的順序逐一插入對應(yīng)的值。9.2.4更新語句UPDATEUPDATE語句用于修改表中的現(xiàn)有數(shù)據(jù)。其語法格式為:UPDATE表名SET列名=新值WHERE列名=某值;更新某一行中的某一列更新某一行中的若干列9.2.5刪除語句DELETEDELETE語句用于刪除表中的記錄。其基本語法格式為:DELETEFROM表名WHERE列名=值;9.3SQLite數(shù)據(jù)庫簡介Python自帶一個輕量級的關(guān)系型數(shù)據(jù)庫——SQLite。SQLite是一種嵌入式關(guān)系型數(shù)據(jù)庫,它的整個數(shù)據(jù)庫就是一個文件。由于SQLite是用C語言編寫的,體積小且性能高,因此它經(jīng)常被集成到各種應(yīng)用程序中,甚至可以在iOS和Android的應(yīng)用中使用。SQLite不需要單獨的服務(wù)器進程或操作系統(tǒng)支持(即無服務(wù)器架構(gòu)),也不需要額外的配置和安裝,這使得它非常易于使用。一個完整的SQLite數(shù)據(jù)庫存儲在一個單一的、跨平臺的磁盤文件中。9.3.1SQLite3的數(shù)據(jù)類型9.3.2

SQLite3的函數(shù)9.3.3SQLite3的模塊9.3.1SQLite3的數(shù)據(jù)類型大多數(shù)SQL數(shù)據(jù)庫引擎使用靜態(tài)數(shù)據(jù)類型,數(shù)據(jù)的類型由其存儲位置(即所在列的類型)決定。而SQLite3采用動態(tài)數(shù)據(jù)類型,它會根據(jù)實際存入的數(shù)據(jù)自動判斷類型。SQLite3的動態(tài)數(shù)據(jù)類型能夠向后兼容其他數(shù)據(jù)庫常用的靜態(tài)數(shù)據(jù)類型,這意味著,在使用靜態(tài)類型的數(shù)據(jù)庫中創(chuàng)建的數(shù)據(jù)表,可以在SQLite3中正常使用。SQLite3中存儲的每個值,都對應(yīng)表9-2中的某種存儲類型。9.3.1SQLite3的數(shù)據(jù)類型實際上,SQLite3還支持表9-3中列出的數(shù)據(jù)類型。9.3.2SQLite3的函數(shù)SQLite時間/日期函數(shù)SQLite算術(shù)函數(shù)SQLite字符串處理函數(shù)其他函數(shù)9.3.3SQLite3的模塊Python標準庫中的sqlite3模塊是用C語言實現(xiàn)的,提供了訪問和操作SQLite數(shù)據(jù)庫的多種功能。sqlite3模塊包括以下常量、函數(shù)和對象:

sqlite3.Version:常量,版本號。

sqlite3.connect(database):函數(shù),用于連接到指定的數(shù)據(jù)庫,返回一個Connect對象。

sqlite3.Connection:數(shù)據(jù)庫連接對象。

sqlite3.Cursor:游標對象。

sqlite3.Row:行對象。9.4Python的SQLite3數(shù)據(jù)庫編程自Python2.5版本起,SQLite3模塊已內(nèi)置于Python中,因此在Python環(huán)境中使用SQLite無需額外安裝任何工具。SQLite3數(shù)據(jù)庫使用SQL語言作為查詢語言,適合用于構(gòu)建具有數(shù)據(jù)存儲需求的工具。Python標準庫中的SQLite3模塊提供了與該數(shù)據(jù)庫的接口。9.4.1訪問數(shù)據(jù)庫的步驟9.4.2創(chuàng)建數(shù)據(jù)庫和表9.4.3插入、更新和刪除記錄操作9.4.4數(shù)據(jù)庫表的查詢操作9.4.1訪問數(shù)據(jù)庫的步驟從Python2.5開始,SQLite3成為Python的標準模塊,也是唯一一個數(shù)據(jù)庫接口類模塊,這極大地方便了我們使用Python進行SQLite數(shù)據(jù)庫的小型應(yīng)用開發(fā)。Python的數(shù)據(jù)庫模塊遵循統(tǒng)一的接口標準,因此數(shù)據(jù)庫操作遵循一致的模式。操作SQLite3數(shù)據(jù)庫主要包括以下幾個步驟。導(dǎo)入PythonSQLite數(shù)據(jù)庫模塊。建立數(shù)據(jù)庫連接,返回Connection對象。創(chuàng)建游標對象。使用游標對象的execute方法執(zhí)行SQL命令并返回結(jié)果集。獲取游標的查詢結(jié)果集。數(shù)據(jù)庫的提交和回滾。關(guān)閉Cursor對象和Connection對象。9.4.2創(chuàng)建數(shù)據(jù)庫和表【例9-17】創(chuàng)建數(shù)據(jù)庫test.db,并在其中創(chuàng)建表book,該表包含三列:id、price和name,其中id為主鍵(primarykey)。#導(dǎo)入PythonSQLite數(shù)據(jù)庫模塊importsqlite3#創(chuàng)建SQLite數(shù)據(jù)庫con=sqlite3.connect("D:\\test.db")#創(chuàng)建表book,包含三列:id(主鍵)、price和namecon.execute("CREATETABLEbook(idPRIMARYKEY,price,name)")Connection對象的execute方法是Cursor對象對應(yīng)方法的快捷方式,系統(tǒng)會創(chuàng)建一個臨時的Cursor對象,然后調(diào)用對應(yīng)的方法,并返回Cursor對象。9.4.3插入、更新和刪除記錄操作在數(shù)據(jù)庫表中插入、更新和刪除記錄的一般步驟如下。(1)建立數(shù)據(jù)庫連接。(2)創(chuàng)建游標對象cur。使用cur.execute(sql)執(zhí)行SQL的INSERT、UPDATE、DELETE等語句來完成數(shù)據(jù)庫記錄的插入、更新和刪除操作,并根據(jù)返回值判斷操作結(jié)果。(3)提交操作。(4)關(guān)閉數(shù)據(jù)庫連接。9.4.4數(shù)據(jù)庫表的查詢操作查詢數(shù)據(jù)庫的步驟如下。(1)建立數(shù)據(jù)庫連接。(2)創(chuàng)建游標對象cur,使用cur.execute(sql)執(zhí)行SQL的SELECT語句。(3)循環(huán)輸出結(jié)果。importsqlite3#打開數(shù)據(jù)庫con=sqlite

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論