版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年上海戲劇學(xué)院單招綜合素質(zhì)考試備考題庫含詳細答案解析
- 2026年廣東省外語藝術(shù)職業(yè)學(xué)院單招綜合素質(zhì)考試參考題庫含詳細答案解析
- 2026年黑龍江護理高等??茖W(xué)校高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細解析
- 2026河南周口淮海醫(yī)院招聘11人參考考試試題及答案解析
- 2026年南京機電職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試模擬試題含詳細答案解析
- 2026貴州護理職業(yè)技術(shù)學(xué)院招聘事業(yè)單位14人考試重點試題及答案解析
- 2026年安徽馬鋼技師學(xué)院單招職業(yè)技能考試備考試題含詳細答案解析
- 2026北京大學(xué)智能學(xué)院招聘勞動合同制工作人員1人參考考試題庫及答案解析
- 2026年石河子工程職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試備考題庫含詳細答案解析
- 2026年山東第一醫(yī)科大學(xué)附屬省立醫(yī)院(山東省立醫(yī)院)公開招聘高級崗位專業(yè)技術(shù)工作人員(4人)考試備考試題及答案解析
- DB50T 1839-2025 合川米粉生產(chǎn)技術(shù)規(guī)程
- 《文學(xué)理論》第九講:文學(xué)風(fēng)格、流派與思潮
- 數(shù)值模擬實施方案(3篇)
- 2025年消防巡查員考試題庫
- (2025)版廉政知識測試題庫(含答案)
- JJF(蒙) 055-2023 熱變形、維卡軟化點溫度測定儀校準規(guī)范
- 2023年FIDIC業(yè)主咨詢工程師標準服務(wù)協(xié)議書
- 兒科護理文獻檢索
- 貴州省2024年高考真題政治試卷(含答案)
- 出口飼料生產(chǎn)、加工、存放企業(yè)檢驗檢疫監(jiān)管手冊
- 2025-2030中國氟化氫氨行業(yè)需求動向及企業(yè)營銷策略探討報告
評論
0/150
提交評論