透過 Python 將資料存入 SQLite 教學

Hsiao-Yu
FishTung
Published in
7 min readSep 15, 2018
“MacBook Pro with images of computer language codes” by Caspar Rubin on Unsplash
⚠ 注意事項 ⚠
* 課程內容是本人的嘔心瀝血之作,若有引用請標明出處
* 本文最後編輯日期:2018/09/15

前言

很多時候我們會有資料儲存的需求,但又不想花過多的時間在安裝資料庫及種種繁瑣的設定,此時就可以考慮使用 SQLite,而本篇介紹透過 Python 存取 SQLite 的方式,達到資料的存放。

本文會運用 DB Browser for SQLite 建立資料庫及觀察程式執行後對資料庫的作用

資料取得

本篇以先前寫的教學文章 Yahoo! 購物中心商品價格爬蟲教學作為延伸,將該文章中爬到的資料作為存入 SQLite 為範例,因此沒看過該網站資訊如何爬取的同學可以先到那一頁做個初步資料取得的認識!

在該文章的最後我們透過撰寫 Python 程式取得商品的標題和價格,請大家複習一下程式碼:

執行結果:

['ASUS ZenFone Max Pro (6G/64G) ZB602KL智慧手...', '$8,990']
['ASUS ZenFone Max Pro ZB602KL(6G/64G) 性能電...', '$8,990']
['ASUS ZenFone Max Pro ZB602KL(3G/32G) 性能電...', '$6,990']
['ASUS ZenFone Max Plus ZB570TL(3G/32G)5.7...', '$5,450']
['ASUS ZenFone Max Pro ZB602KL(6G/64G)', '$8,990']
['ASUS ZenFone Max Pro (3G/32G) ZB602KL智慧手...', '$6,990']
['ASUS ZenFone Max Pro ZB602KL(3G/32G)智慧手機', '$6,990']
['ASUS ZenFone Max Pro ZB602KL(6G/64G)智慧手機', '$8,990']
['ASUS ZenFone Max Pro ZB602KL(6G/64G) 性能電...', '$8,990']
['ASUS ZenFone Max Pro ZB602KL(3G/32G) 性能電...', '$6,990']
['ASUS ZenFone Max Pro ZB602KL (3G/32G) 智慧...', '$6,990']
['ASUS ZenFone Max Pro ZB602KL (6G/64G) 智慧...', '$8,990']
['ASUS ZenFone Max M1 ZB555KL 2G/32G 5.5吋智...', '$4,580']

現在我們取得了需要的資訊,而重點是如何將這些資訊存入 SQLite 資料庫中,接著我們正式開始進入課程!

用 DB Browser for SQLite 建立資料庫

STEP 1:建立資料庫

首先,我們透過 DB Browser for SQLite 建立新的資料庫,點選左上角的新建資料庫

STEP 2:選取資料庫路徑及命名

在第 2 步請選取資料庫要存放的位置,本文以 Desktop 作為存放範例,並取名為 yahoo,完成後按右下角 Save

STEP 3:建立資料表及欄位設定

在此步驟中,會建立一個資料表,本文以 yahoo_price 命名,並建立 3 個欄位,分別為:id、title、price

其中 id 請將 PK、AI、U 勾選起來

設定完成請選取右下角 OK

STEP 4:儲存

完成上述步驟後,會到如下圖的頁面,此時請記得點選 Write Changes 儲存剛剛所做的所有變更

把爬下來的資料存到 SQLite 資料庫

在這一節中,我們將修改上面所看到的程式碼,分為下列幾個步驟:

  1. import sqlite 套件
  2. 定義 sqlite db 路徑
  3. 程式碼中加入 SQL 存入語法

執行結果一樣會印出執行結果:

['ASUS ZenFone Max Pro ZB602KL(3G/32G)智慧手機', '$6,990']
['ASUS ZenFone Max Plus (M1) ZB570TL全螢幕電力怪...', '$5,250']
['ASUS ZenFone Max Pro ZB602KL (3G/32G)', '$6,990']
['ASUS ZenFone Max Pro (6G/64G) ZB602KL智慧手...', '$8,990']
['ASUS ZenFone Max Pro ZB602KL(6G/64G) 性能電...', '$8,990']
['ASUS ZenFone Max Pro ZB602KL(3G/32G) 性能電...', '$6,990']
['ASUS ZenFone Max Plus ZB570TL(3G/32G)5.7...', '$5,450']
['ASUS ZenFone Max Pro ZB602KL(6G/64G)', '$8,990']
['ASUS ZenFone Max Pro (3G/32G) ZB602KL智慧手...', '$6,990']
['ASUS ZenFone Max Pro ZB602KL(6G/64G)智慧手機', '$8,990']
['ASUS ZenFone Max Pro ZB602KL(3G/32G)智慧手機', '$6,990']
['ASUS ZenFone Max Pro ZB602KL(6G/64G) 性能電...', '$8,990']
['ASUS ZenFone Max Pro ZB602KL(3G/32G) 性能電...', '$6,990']
['ASUS ZenFone Max Pro ZB602KL (3G/32G) 智慧...', '$6,990']
['ASUS ZenFone Max Pro ZB602KL (6G/64G) 智慧...', '$8,990']
['ASUS ZenFone Max M1 ZB555KL 2G/32G 5.5吋智...', '$4,580']

此時回到 DB Browser for SQLite 觀察執行結果,資料已經順利的存在資料庫中了!

到這邊,Python 爬蟲抓取下來的資料存到 SQLite 囉!
教學到這邊告一段落,如果喜歡我的文章,歡迎透過街口支付請我一杯咖啡☕️

--

--