




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第Python標(biāo)準(zhǔn)庫之?dāng)?shù)據(jù)庫sqlite3目錄1、創(chuàng)建數(shù)據(jù)庫2、插入數(shù)據(jù)3、查詢4、更新與刪除Python自帶一個輕量級的關(guān)系型數(shù)據(jù)庫SQLite。這一數(shù)據(jù)庫使用SQL語言。SQLite作為后端數(shù)據(jù)庫,可以搭配Python建網(wǎng)站,或者制作有數(shù)據(jù)存儲需求的工具。SQLite還在其它領(lǐng)域有廣泛的應(yīng)用,比如HTML5和移動端。Python標(biāo)準(zhǔn)庫中的sqlite3提供該數(shù)據(jù)庫的接口。
我將創(chuàng)建一個簡單的關(guān)系型數(shù)據(jù)庫,為一個書店存儲書的分類和價格。數(shù)據(jù)庫中包含兩個表:category用于記錄分類,book用于記錄某個書的信息。一本書歸屬于某一個分類,因此book有一個外鍵(foreignkey),指向catogory表的主鍵id。
1、創(chuàng)建數(shù)據(jù)庫
我首先來創(chuàng)建數(shù)據(jù)庫,以及數(shù)據(jù)庫中的表。在使用connect()連接數(shù)據(jù)庫后,我就可以通過定位指針cursor,來執(zhí)行SQL命令:
#ByVamei
importsqlite3
#test.dbisafileintheworkingdirectory.
conn=sqlite3.connect("test.db")
c=conn.cursor()
#createtables
c.execute('''CREATETABLEcategory
(idintprimarykey,sortint,nametext)''')
c.execute('''CREATETABLEbook
(idintprimarykey,
sortint,
nametext,
pricereal,
categoryint,
FOREIGNKEY(category)REFERENCEScategory(id))''')
#savethechanges
mit()
#closetheconnectionwiththedatabase
conn.close()
SQLite的數(shù)據(jù)庫是一個磁盤上的文件,如上面的test.db,因此整個數(shù)據(jù)庫可以方便的移動或復(fù)制。test.db一開始不存在,所以SQLite將自動創(chuàng)建一個新文件。
利用execute()命令,我執(zhí)行了兩個SQL命令,創(chuàng)建數(shù)據(jù)庫中的兩個表。創(chuàng)建完成后,保存并斷開數(shù)據(jù)庫連接。
2、插入數(shù)據(jù)
上面創(chuàng)建了數(shù)據(jù)庫和表,確立了數(shù)據(jù)庫的抽象結(jié)構(gòu)。下面將在同一數(shù)據(jù)庫中插入數(shù)據(jù):
#ByVamei
importsqlite3
conn=sqlite3.connect("test.db")
c=conn.cursor()
books=[(1,1,'CookRecipe',3.12,1),
(2,3,'PythonIntro',17.5,2),
(3,2,'OSIntro',13.6,2),
#execute"INSERT"
c.execute("INSERTINTOcategoryVALUES(1,1,'kitchen')")
#usingtheplaceholder
c.execute("INSERTINTOcategoryVALUES(,,)",[(2,2,'computer')])
#executemultiplecommands
c.executemany('INSERTINTObookVALUES(,,,,)',books)
mit()
conn.close()
插入數(shù)據(jù)同樣可以使用execute()來執(zhí)行完整的SQL語句。SQL語句中的參數(shù),使用""作為替代符號,并在后面的參數(shù)中給出具體值。這里不能用Python的格式化字符串,如"%s",因為這一用法容易受到SQL注入攻擊。
我也可以用executemany()的方法來執(zhí)行多次插入,增加多個記錄。每個記錄是表中的一個元素,如上面的books表中的元素。
3、查詢
在執(zhí)行查詢語句后,Python將返回一個循環(huán)器,包含有查詢獲得的多個記錄。你循環(huán)讀取,也可以使用sqlite3提供的fetchone()和fetchall()方法讀取記錄:
#ByVamei
importsqlite3
conn=sqlite3.connect('test.db')
c=conn.cursor()
#retrieveonerecord
c.execute('SELECTnameFROMcategoryORDERBYsort')
print(c.fetchone())
print(c.fetchone())
#retrieveallrecordsasalist
c.execute('SELECT*FROMbookWHEREbook.category=1')
print(c.fetchall())
#iteratethroughtherecords
forrowinc.execute('SELECTname,priceFROMbookORDERBYsort'):
print(row)
4、更新與刪除
你可以更新某個記錄,或者刪除記錄:
#ByVamei
conn=sqlite3.connect("test.db")
c=conn.cursor()
c.execute('UPDATEbookSETprice=WHER
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全執(zhí)法試題及答案
- 深處種菱淺種稻-《汽車數(shù)據(jù)出境安全指引(2025版)》(征求意見稿)的準(zhǔn)確理解與適用
- 安全施工管理試題及答案
- 血液凈化設(shè)備市場國內(nèi)外競爭格局對比研究報告
- 安全生產(chǎn)教育試題及答案
- 2025年消費金融在下沉市場的地域差異與政策影響報告001
- 2025年農(nóng)業(yè)灌溉用水管理:水資源保護(hù)與高效利用技術(shù)報告
- 2025年五金制品行業(yè)跨境電商物流與倉儲解決方案報告
- 助殘主題班會課件
- 制定班規(guī)主題班會課件
- 統(tǒng)編版(2024)七年級下冊歷史期末質(zhì)量監(jiān)測試卷(含答案解析)
- 小兒高熱驚厥急救與護(hù)理
- 2025年統(tǒng)編版(2024)初中歷史七年級下冊期末測試卷及答案
- 云計算試題及答案
- 政治●湖北卷丨2024年湖北省普通高中學(xué)業(yè)水平選擇性考試政治試卷及答案
- 2024-2025湘科版小學(xué)科學(xué)五年級下冊期末考試卷附答案(三套)
- JBT 1306-2024 電動單梁起重機(正式版)
- 物業(yè)承接查驗協(xié)議書
- 主系表結(jié)構(gòu)句子練習(xí)題
- 《卡通畫教學(xué)》PPT課件.ppt
- 建筑工程施工圖審查常見問題與處理措施
評論
0/150
提交評論