Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 第9章 - Python數(shù)據(jù)庫(kù)編程_第1頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 第9章 - Python數(shù)據(jù)庫(kù)編程_第2頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 第9章 - Python數(shù)據(jù)庫(kù)編程_第3頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 第9章 - Python數(shù)據(jù)庫(kù)編程_第4頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 第9章 - Python數(shù)據(jù)庫(kù)編程_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Python程序設(shè)計(jì)第9章Python數(shù)據(jù)庫(kù)編程學(xué)習(xí)目標(biāo)理解sqlite3開(kāi)發(fā)流程掌握sqlite3API使用知識(shí)目標(biāo)能夠使用sqlite3編寫(xiě)簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用能力目標(biāo)新技術(shù)適應(yīng)性數(shù)據(jù)安全和隱私保護(hù)情感態(tài)度與價(jià)值觀了解SQLite3數(shù)據(jù)庫(kù)010203了解sqlite3模塊

sqlite3常用API目

錄了解SQLite3數(shù)據(jù)庫(kù)010203了解sqlite3模塊sqlite3常用API目

錄SQLite3應(yīng)用SQLite3特點(diǎn)SQLite3:輕量級(jí)關(guān)系數(shù)據(jù)庫(kù)嵌入式設(shè)備移動(dòng)應(yīng)用開(kāi)發(fā)小中型桌面應(yīng)用特點(diǎn)嵌入式數(shù)據(jù)庫(kù)引擎無(wú)服務(wù)器架構(gòu)零配置跨平臺(tái)9.1.1SQLite3數(shù)據(jù)庫(kù)主要特點(diǎn)212了解SQLite3數(shù)據(jù)庫(kù)010203了解sqlite3模塊sqlite3常用API目

錄了解sqlite3模塊0203sqlite3常用API目

錄了解SQLite3數(shù)據(jù)庫(kù)01sqlite3功能sqlite3基本使用sqlite3模塊:對(duì)SQLite3C語(yǔ)言接口的封裝,用于在Python環(huán)境下與SQLite3數(shù)據(jù)庫(kù)交互主要功能連接與游標(biāo)執(zhí)行SQL命令獲取查詢結(jié)果事務(wù)處理錯(cuò)誤處理數(shù)據(jù)類型:NULL、INTEGER、REAL、TEXT、BLOB9.1.2初識(shí)sqlite3模塊213sqlite3模塊的基本使用9.1.2初識(shí)sqlite3模塊213importsqlite3connection=sqlite3.connect('9-1.db')c=connection.cursor()#創(chuàng)建游標(biāo)對(duì)象print("數(shù)據(jù)庫(kù)打開(kāi)成功")示例9-1sqlite3模塊的基本使用9.1.2初識(shí)sqlite3模塊213c.execute('CREATETABLEcompany(idINTPRIMARYKEYNOTNULL,'

'nameTEXTNOTNULL,'

'ageINTNOTNULL,'

'addressCHAR(50),'

'salaryREAL);')#創(chuàng)建表print("數(shù)據(jù)表創(chuàng)建成功")示例9-1sqlite3模塊的基本使用9.1.2初識(shí)sqlite3模塊213connection.execute('INSERTINTOcompany(id,name,age,address,salary)''VALUES(1,"Paul",32,"California",20000)')mit()#提交事務(wù)connection.close()#關(guān)閉數(shù)據(jù)庫(kù)連接示例9-1了解SQLite3數(shù)據(jù)庫(kù)010203了解sqlite3模塊sqlite3常用API目

錄sqlite3常用API03目

錄了解SQLite3數(shù)據(jù)庫(kù)0102了解sqlite3模塊連接與游標(biāo)對(duì)象SQL命令執(zhí)行查詢與遍歷結(jié)果事務(wù)提交與回滾關(guān)閉資源connect():創(chuàng)建一個(gè)連接對(duì)象并返回,該對(duì)象關(guān)聯(lián)至一個(gè)SQLite數(shù)據(jù)庫(kù)文件database字符串“:memory:”:創(chuàng)建一個(gè)內(nèi)存數(shù)據(jù)庫(kù)文件文件名:文件存在則打開(kāi),不存在則創(chuàng)建后再打開(kāi)timeout:設(shè)置連接等待時(shí)間,默認(rèn)為5秒9.2.1連接數(shù)據(jù)庫(kù)

214連接對(duì)象=sqlite3.connect(database[,

timeout,...])9.2.1連接數(shù)據(jù)庫(kù)214連接數(shù)據(jù)庫(kù)importsqlite3try:

#嘗試連接到SQLite數(shù)據(jù)庫(kù)

conn=sqlite3.connect('9-2.db')

print('連接成功')

conn.close()exceptsqlite3.Errorase:

#捕獲并處理連接失敗時(shí)拋出的異常

print(f'連接失敗:{e}')示例9-29.2.2獲取游標(biāo)對(duì)象215cursor():創(chuàng)建一個(gè)游標(biāo)對(duì)象并返回,該對(duì)象提供執(zhí)行SQL命令、獲取查詢結(jié)果的方法importsqlite3try:

conn=sqlite3.connect('9-3.db')

c=conn.cursor()#獲取游標(biāo)對(duì)象

conn.close()exceptsqlite3.Errorase:

print(f'發(fā)生異常:{e}')示例9-3連接對(duì)象.cursor([cursorClass])9.2.3執(zhí)行SQL命令215execute():用于執(zhí)行SQL命令sql:要執(zhí)行的SQL語(yǔ)句字符串,可以是CREATETABLE、INSERTINTO、UPDATE、DELETE或SELECT等parameters:可選參數(shù),可以是一個(gè)元組或字典,為參數(shù)化查詢中的占位符游標(biāo)對(duì)象.execute(sql[,parameters])9.2.3執(zhí)行SQL命令215通過(guò)游標(biāo)對(duì)象創(chuàng)建表并插入數(shù)據(jù)importsqlite3try:

conn=sqlite3.connect('9-4.db')

c=conn.cursor()

c.execute('CREATETABLEIFNOTEXISTSusers

('

'idINTEGERPRIMARYKEY,'

'nameTEXT,'

'ageINTEGER)')示例9-49.2.3執(zhí)行SQL命令215

#插入一條記錄,無(wú)參數(shù)

c.execute('INSERTINTOusers(name,age)VALUES("John",35)')

#插入一條記錄,使用參數(shù)化查詢

c.execute('INSERTINTOusers(name,age)VALUES(?,?)',('Alice',30))

mit()#提交事務(wù)

c.close()#關(guān)閉游標(biāo)

conn.close()#關(guān)閉數(shù)據(jù)庫(kù)exceptsqlite3.Errorase:

print(f'發(fā)生異常:{e}')示例9-49.2.3執(zhí)行SQL命令216通過(guò)游標(biāo)對(duì)象更新和刪除數(shù)據(jù)conn=sqlite3.connect('9-4.db')

c=conn.cursor()#將users表里name="John"的記錄中的age字段設(shè)置為31c.execute('UPDATEuserssetage=31WHEREname="John"')#刪除users表中name="Alice"的記錄c.execute('DELETEFROMusersWHEREname="Alice"')mit()

c.close()conn.close()示例9-5cursor.fetchone():從游標(biāo)內(nèi)部緩沖區(qū)中獲取一行查詢結(jié)果成功則返回包含該行數(shù)據(jù)的元組沒(méi)有更多數(shù)據(jù)可獲取返回None適合需要逐行處理查詢結(jié)果的場(chǎng)景9.2.4查詢數(shù)據(jù)與遍歷結(jié)果2169.2.4查詢數(shù)據(jù)與遍歷結(jié)果216fetchone()的使用conn=sqlite3.connect('9-4.db')c=conn.cursor()results=c.execute('SELECT*FROMusers')#獲取查詢結(jié)果的第一行row=results.fetchone()whilerowisnotNone:#只要獲取結(jié)果不為None

print(row)#輸出該條查詢結(jié)果

row=cursor.fetchone()#獲取下一行示例9-6cursor.fetchmany(size):從游標(biāo)內(nèi)部緩沖區(qū)中獲取指定數(shù)量的查詢結(jié)果返回一個(gè)列表對(duì)象,元素為元組,一個(gè)元組代表一行數(shù)據(jù)少于指定的size則返回所有記錄9.2.4查詢數(shù)據(jù)與遍歷結(jié)果2179.2.4查詢數(shù)據(jù)與遍歷結(jié)果217fetchmany()的使用conn=sqlite3.connect('9-6.db')

c=conn.cursor()

results=c.execute('SELECTname,ageFROMusersORDERBYageASC')#獲取查詢結(jié)果的第3行,即年齡最小的3個(gè)人rows=results.fetchmany(3)forrinrows:#rows是包含3個(gè)元組的列表對(duì)象

print(r)#每個(gè)元組代表一條查詢結(jié)果示例9-7cursor.fetchall:從游標(biāo)內(nèi)部緩沖區(qū)中獲取所有查詢結(jié)果返回一個(gè)列表對(duì)象,元素為元組,一個(gè)元組代表一行數(shù)據(jù)9.2.4查詢數(shù)據(jù)與遍歷結(jié)果2179.2.4查詢數(shù)據(jù)與遍歷結(jié)果217fetchall()的使用方法conn=sqlite3.connect('9-4.db')c=conn.cursor()#去users表里查詢所有記錄results=c.execute('SELECT*FROMusers')#取出當(dāng)前緩沖區(qū)中的所有結(jié)果rows=results.fetchall()forrinrows:

print(r)示例9-8事務(wù):一系列操作的邏輯單元,要么全部執(zhí)行,要么全部不執(zhí)行事務(wù)確保了數(shù)據(jù)庫(kù)從一個(gè)一致的狀態(tài)轉(zhuǎn)換到另一個(gè)一致的狀態(tài)如果事務(wù)中的某個(gè)操作執(zhí)行失敗,或者事務(wù)被顯式地回滾,所有在該事務(wù)中執(zhí)行的操作都會(huì)被撤銷,數(shù)據(jù)庫(kù)將恢復(fù)到事務(wù)開(kāi)始之前的狀態(tài)9.2.5事務(wù)提交與回滾218execute()方法不會(huì)立即修改數(shù)據(jù)庫(kù)文件,而是被暫存在當(dāng)前的事務(wù)中,只有當(dāng)事務(wù)被提交時(shí),這些修改才會(huì)寫(xiě)入數(shù)據(jù)庫(kù)連接對(duì)象.commit():提交當(dāng)前事務(wù)連接對(duì)象.rollback():撤銷更改9.2.5事務(wù)提交與回滾2189.2.5事務(wù)提交與回滾218示例9-5中commit()的使用conn=sqlite3.connect('9-4.db')

c=conn.cursor()#將users表里name="John"的記錄中的age字段設(shè)置為31c.execute('UPDATEu

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論