包含標籤 Sqlite 的文章

我要訂便當 (5): Heroku 填坑小記

在上一集的 將 Python 腳本部署上 Heroku 中,記錄了將 Python 腳本放上 Heroku 的過程,但仍然沒有將我們的 訂便當小幫手 給放上去。之前有稍微提到是因為過程中遇到了一些問題,最後決定將這些問題和找到的前人解決文記錄在這一篇,將來再遇到的時候就可以參考。

  1. SQLite 要改成用 PostgreSQL
  2. 在 Heroku 上執行 Selenium

一、SQLite 要改成用 PostgreSQL

在之前的 我要訂便當(2) —— 用 Python + Sqlite 儲存訂單 中,為了方便及簡單性,選擇了較輕便的 SQLite 來儲存我們爬回來的訂單資訊。然而,SQLite 將資料儲存在小檔案以便於攜帶的做法,在 Heroku 上將會遭遇像是各個 dyno 的資料不同步等許多問題,因此 Heroku 是不建議使用 SQLite 的。

在 Heroku 的開發文件中的 SQLite on Heroku 有關於這部分的詳細說明,並直接提到「If you were to use SQLite on Heroku, you would lose your entire database at least once every 24 hours.」同時,官方也提供了他們的建議:PostgreSQL。相較於輕便但只能同時單一寫入而且還會在 dyno 炸掉的 SQLite,PostgreSQL 的完整性更符合 Heroku 對服務的要求。

關於在 Heroku 上使用 PostgreSQL 的做法,這篇 佈署 Python Flask 網站留言板應用程式到 Heroku + PostgreSQL 資料庫系統 說明得相當詳細。

……

閱讀全文


我要訂便當 (2): 用 Python + Sqlite 儲存訂單

前情回顧:上一集在 我要訂便當(1) —— 用 Python + Selenium 控制瀏覽器取得訂單 中,我們藉由自動化套件 Selenium 控制 Chrome 成功從訂便當網站裡取得訂單資訊了。但只能夠取得現在的訂單,和原本有新訂單的時候才通知的目標仍然有點差距,那麼,如何判斷有沒有新訂單呢?只要和上一次讀取時的訂單相比就能知道了。

目標:將訂單儲存起來,判斷有沒有新訂單。

這一篇主要的做法主要參考自 大數軟體 - 如何透過 Line 發送最新一集的漫畫 中,關於如何判斷是否有最新一集漫畫的部分。這系列的影片步驟明瞭,說明直接,同時標題也很對我胃口(我就喜歡把工具拿來生活周遭玩的感覺),因此這邊也推薦一下,有興趣的可以去看看。

回歸正題,這篇的第一部分就是要使用 Sqlite 將抓到的訂單儲存起來。Sqlite 顧名思義就是 SQL + Lite 的感覺,主打小巧輕便。它會將資料儲存在一個檔案中,並且支援精簡的 SQL 指令,可以說是相當方便。

在 Python 要對 Sqlite 做操作主要是藉由 sqlite3 這個包,因此在接下來的步驟前,請先安裝這個包。關於 Sqlite3 的基本操作,可以參閱 菜鳥教程的 SQLite - Python 教學。

……

閱讀全文