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

下載本文檔

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

文檔簡介

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

sqlite3常用API目

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

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

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

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

'nameTEXTNOTNULL,'

'ageINTNOTNULL,'

'addressCHAR(50),'

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

錄sqlite3常用API03目

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

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

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

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

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

print('連接成功')

conn.close()exceptsqlite3.Errorase:

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

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

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

c=conn.cursor()#獲取游標對象

conn.close()exceptsqlite3.Errorase:

print(f'發(fā)生異常:{e}')示例9-3連接對象.cursor([cursorClass])9.2.3執(zhí)行SQL命令215execute():用于執(zhí)行SQL命令sql:要執(zhí)行的SQL語句字符串,可以是CREATETABLE、INSERTINTO、UPDATE、DELETE或SELECT等parameters:可選參數(shù),可以是一個元組或字典,為參數(shù)化查詢中的占位符游標對象.execute(sql[,parameters])9.2.3執(zhí)行SQL命令215通過游標對象創(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

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

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

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

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

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

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

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

print(f'發(fā)生異常:{e}')示例9-49.2.3執(zhí)行SQL命令216通過游標對象更新和刪除數(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():從游標內(nèi)部緩沖區(qū)中獲取一行查詢結(jié)果成功則返回包含該行數(shù)據(jù)的元組沒有更多數(shù)據(jù)可獲取返回None適合需要逐行處理查詢結(jié)果的場景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):從游標內(nèi)部緩沖區(qū)中獲取指定數(shù)量的查詢結(jié)果返回一個列表對象,元素為元組,一個元組代表一行數(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個人rows=results.fetchmany(3)forrinrows:#rows是包含3個元組的列表對象

print(r)#每個元組代表一條查詢結(jié)果示例9-7cursor.fetchall:從游標內(nèi)部緩沖區(qū)中獲取所有查詢結(jié)果返回一個列表對象,元素為元組,一個元組代表一行數(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')#取出當前緩沖區(qū)中的所有結(jié)果rows=results.fetchall()forrinrows:

print(r)示例9-8事務(wù):一系列操作的邏輯單元,要么全部執(zhí)行,要么全部不執(zhí)行事務(wù)確保了數(shù)據(jù)庫從一個一致的狀態(tài)轉(zhuǎn)換到另一個一致的狀態(tài)如果事務(wù)中的某個操作執(zhí)行失敗,或者事務(wù)被顯式地回滾,所有在該事務(wù)中執(zhí)行的操作都會被撤銷,數(shù)據(jù)庫將恢復到事務(wù)開始之前的狀態(tài)9.2.5事務(wù)提交與回滾218execute()方法不會立即修改數(shù)據(jù)庫文件,而是被暫存在當前的事務(wù)中,只有當事務(wù)被提交時,這些修改才會寫入數(shù)據(jù)庫連接對象.commit():提交當前事務(wù)連接對象.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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論