版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Python程序設計第9章Python數(shù)據(jù)庫編程學習目標理解sqlite3開發(fā)流程掌握sqlite3API使用知識目標能夠使用sqlite3編寫簡單的數(shù)據(jù)庫應用能力目標新技術適應性數(shù)據(jù)安全和隱私保護情感態(tài)度與價值觀了解SQLite3數(shù)據(jù)庫010203了解sqlite3模塊
sqlite3常用API目
錄了解SQLite3數(shù)據(jù)庫010203了解sqlite3模塊sqlite3常用API目
錄SQLite3應用SQLite3特點SQLite3:輕量級關系數(shù)據(jù)庫嵌入式設備移動應用開發(fā)小中型桌面應用特點嵌入式數(shù)據(jù)庫引擎無服務器架構零配置跨平臺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命令獲取查詢結果事務處理錯誤處理數(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()#提交事務connection.close()#關閉數(shù)據(jù)庫連接示例9-1了解SQLite3數(shù)據(jù)庫010203了解sqlite3模塊sqlite3常用API目
錄sqlite3常用API03目
錄了解SQLite3數(shù)據(jù)庫0102了解sqlite3模塊連接與游標對象SQL命令執(zhí)行查詢與遍歷結果事務提交與回滾關閉資源connect():創(chuàng)建一個連接對象并返回,該對象關聯(lián)至一個SQLite數(shù)據(jù)庫文件database字符串“:memory:”:創(chuàng)建一個內存數(shù)據(jù)庫文件文件名:文件存在則打開,不存在則創(chuàng)建后再打開timeout:設置連接等待時間,默認為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命令、獲取查詢結果的方法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()#提交事務
c.close()#關閉游標
conn.close()#關閉數(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字段設置為31c.execute('UPDATEuserssetage=31WHEREname="John"')#刪除users表中name="Alice"的記錄c.execute('DELETEFROMusersWHEREname="Alice"')mit()
c.close()conn.close()示例9-5cursor.fetchone():從游標內部緩沖區(qū)中獲取一行查詢結果成功則返回包含該行數(shù)據(jù)的元組沒有更多數(shù)據(jù)可獲取返回None適合需要逐行處理查詢結果的場景9.2.4查詢數(shù)據(jù)與遍歷結果2169.2.4查詢數(shù)據(jù)與遍歷結果216fetchone()的使用conn=sqlite3.connect('9-4.db')c=conn.cursor()results=c.execute('SELECT*FROMusers')#獲取查詢結果的第一行row=results.fetchone()whilerowisnotNone:#只要獲取結果不為None
print(row)#輸出該條查詢結果
row=cursor.fetchone()#獲取下一行示例9-6cursor.fetchmany(size):從游標內部緩沖區(qū)中獲取指定數(shù)量的查詢結果返回一個列表對象,元素為元組,一個元組代表一行數(shù)據(jù)少于指定的size則返回所有記錄9.2.4查詢數(shù)據(jù)與遍歷結果2179.2.4查詢數(shù)據(jù)與遍歷結果217fetchmany()的使用conn=sqlite3.connect('9-6.db')
c=conn.cursor()
results=c.execute('SELECTname,ageFROMusersORDERBYageASC')#獲取查詢結果的第3行,即年齡最小的3個人rows=results.fetchmany(3)forrinrows:#rows是包含3個元組的列表對象
print(r)#每個元組代表一條查詢結果示例9-7cursor.fetchall:從游標內部緩沖區(qū)中獲取所有查詢結果返回一個列表對象,元素為元組,一個元組代表一行數(shù)據(jù)9.2.4查詢數(shù)據(jù)與遍歷結果2179.2.4查詢數(shù)據(jù)與遍歷結果217fetchall()的使用方法conn=sqlite3.connect('9-4.db')c=conn.cursor()#去users表里查詢所有記錄results=c.execute('SELECT*FROMusers')#取出當前緩沖區(qū)中的所有結果rows=results.fetchall()forrinrows:
print(r)示例9-8事務:一系列操作的邏輯單元,要么全部執(zhí)行,要么全部不執(zhí)行事務確保了數(shù)據(jù)庫從一個一致的狀態(tài)轉換到另一個一致的狀態(tài)如果事務中的某個操作執(zhí)行失敗,或者事務被顯式地回滾,所有在該事務中執(zhí)行的操作都會被撤銷,數(shù)據(jù)庫將恢復到事務開始之前的狀態(tài)9.2.5事務提交與回滾218execute()方法不會立即修改數(shù)據(jù)庫文件,而是被暫存在當前的事務中,只有當事務被提交時,這些修改才會寫入數(shù)據(jù)庫連接對象.commit():提交當前事務連接對象.rollback():撤銷更改9.2.5事務提交與回滾2189.2.5事務提交與回滾218示例9-5中commit()的使用conn=sqlite3.connect('9-4.db')
c=conn.cursor()#將users表里name="John"的記錄中的age字段設置為31c.execute('UPDATEu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 承辦宴席合同范例
- 專利設計代理合同范例
- 畫展展廳布置合同范例
- 眼科學題庫含參考答案
- 深圳勞務糾紛合同范例
- 用電促銷合同范例
- 房屋合同范例每漲
- 2025年寧夏貨運上崗證考試題答案
- 沙采購合同合同范例
- 黨員活動策劃合同范例
- 2024年煤礦探放水考試題庫附答案
- 《會展英語》課程教學大綱
- 礦山安全生產(chǎn)管理經(jīng)驗分享
- 初識旅游智慧樹知到期末考試答案2024年
- 2023年中國電動工具行業(yè)發(fā)展白皮書
- 2022-2023學年北京市豐臺區(qū)八年級(上)期末歷史試題(含答案)
- 江蘇省南京市玄武區(qū)2023年數(shù)學七上期末統(tǒng)考試題含解析
- 生物安全教學課件
- 漢語言文學生涯發(fā)展展示
- 盆底功能障礙問卷(PFDI20)
- 期末綜合復習(試題)-2023-2024學年五年級上冊數(shù)學人教版
評論
0/150
提交評論