Python 快速教程(標準庫14):資料庫 (sqlite3)

發表於2015-11-16

Python自帶一個輕量級的關係型資料庫SQLite。這一資料庫使用SQL語言。SQLite作為後端資料庫,可以搭配Python建網站,或者製作有資料儲存需求的工具。SQLite還在其它領域有廣泛的應用,比如HTML5和移動端。Python標準庫中的sqlite3提供該資料庫的介面。

我將建立一個簡單的關係型資料庫,為一個書店儲存書的分類和價格。資料庫中包含兩個表:category用於記錄分類,book用於記錄某個書的資訊。一本書歸屬於某一個分類,因此book有一個外來鍵(foreign key),指向catogory表的主鍵id。

建立資料庫

我首先來建立資料庫,以及資料庫中的表。在使用connect()連線資料庫後,我就可以通過定位指標cursor,來執行SQL命令:

 

SQLite的資料庫是一個磁碟上的檔案,如上面的test.db,因此整個資料庫可以方便的移動或複製。test.db一開始不存在,所以SQLite將自動建立一個新檔案。

利用execute()命令,我執行了兩個SQL命令,建立資料庫中的兩個表。建立完成後,儲存並斷開資料庫連線。

 

插入資料

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

 

插入資料同樣可以使用execute()來執行完整的SQL語句。SQL語句中的引數,使用”?”作為替代符號,並在後面的引數中給出具體值。這裡不能用Python的格式化字串,如”%s”,因為這一用法容易受到SQL隱碼攻擊。

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

 

查詢

在執行查詢語句後,Python將返回一個迴圈器,包含有查詢獲得的多個記錄。你迴圈讀取,也可以使用sqlite3提供的fetchone()和fetchall()方法讀取記錄:

 

更新與刪除

你可以更新某個記錄,或者刪除記錄:

 

你也可以直接刪除整張表:

如果刪除test.db,那麼整個資料庫會被刪除。

 

總結

sqlite3只是一個SQLite的介面。想要熟練的使用SQLite資料庫,還需要學習更多的關係型資料庫的知識。

相關文章