Python標準庫之數據庫 sqlite3_第1頁
Python標準庫之數據庫 sqlite3_第2頁
Python標準庫之數據庫 sqlite3_第3頁
Python標準庫之數據庫 sqlite3_第4頁
Python標準庫之數據庫 sqlite3_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Python標準庫之數據庫sqlite3目錄1、創建數據庫2、插入數據3、查詢4、更新與刪除Python自帶一個輕量級的關系型數據庫SQLite。這一數據庫使用SQL語言。SQLite作為后端數據庫,可以搭配Python建網站,或者制作有數據存儲需求的工具。SQLite還在其它領域有廣泛的應用,比如HTML5和移動端。Python標準庫中的sqlite3提供該數據庫的接口。

我將創建一個簡單的關系型數據庫,為一個書店存儲書的分類和價格。數據庫中包含兩個表:category用于記錄分類,book用于記錄某個書的信息。一本書歸屬于某一個分類,因此book有一個外鍵(foreignkey),指向catogory表的主鍵id。

1、創建數據庫

我首先來創建數據庫,以及數據庫中的表。在使用connect()連接數據庫后,我就可以通過定位指針cursor,來執行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的數據庫是一個磁盤上的文件,如上面的test.db,因此整個數據庫可以方便的移動或復制。test.db一開始不存在,所以SQLite將自動創建一個新文件。

利用execute()命令,我執行了兩個SQL命令,創建數據庫中的兩個表。創建完成后,保存并斷開數據庫連接。

2、插入數據

上面創建了數據庫和表,確立了數據庫的抽象結構。下面將在同一數據庫中插入數據:

#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()

插入數據同樣可以使用execute()來執行完整的SQL語句。SQL語句中的參數,使用""作為替代符號,并在后面的參數中給出具體值。這里不能用Python的格式化字符串,如"%s",因為這一用法容易受到SQL注入攻擊。

我也可以用executemany()的方法來執行多次插入,增加多個記錄。每個記錄是表中的一個元素,如上面的books表中的元素。

3、查詢

在執行查詢語句后,Python將返回一個循環器,包含有查詢獲得的多個記錄。你循環讀取,也可以使用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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論