佈署Python Flask網站留言板應用程式到Heroku + PostgreSQL資料庫系統

本文將示範如何把《超圖解Python程式設計入門》第12章的留言板資料庫網站佈署到Heroku。Heroku網站提供的資料庫系統是開放原始碼的PostgreSQL(簡稱Postgres),啟用此資料庫系統的步驟如下:

1. 登入Heroku網站,點擊你要佈署留言板的應用程式名稱:

Heroku應用程式

2. 點擊Resources(資源),在底下的Add-ons(外掛)搜尋欄位,輸入關鍵字 “postgres”,可以找到Heroku Postgres;按下Enter鍵。

搜尋Heroku Postgres資源

3. 底下畫面提示將在bbs應用程式附加Heroku Postgres資料庫服務,方案選擇“Hobby Dev – Free”(免費),按下“Provision”(供應)

附加Heroku Postgres資料庫服務

4. 點擊剛才新增的資料庫服務名稱,可查看相關設定資料。

查看資料庫相關設定資料

5. 切換到資料庫服務的Settings(設置)畫面,點擊“View Credentials”(檢視憑證)

資料庫服務的Settings(設置)畫面

即可看到資料庫主機(Host)資料庫名稱(Database)使用者名稱(User)埠號(Port)密碼(Password)

資料庫Credentials(檢視憑證):

其中最重要的是URI(資源位址),它由底下的格式組成:

postgres://使用者:密碼@主機:埠號/資料庫

請複製此URI備用。

修改資料庫連線位址與資料表欄位

開啟guestbook.py檔,把原本連線到SQLite資料庫位址的敘述(第12行):

app.config['SQLALCHEMY_DATABASE_URI'] =  'sqlite:///bbs.db'

改成之前複製的PostgreSQL位址:

app.config['SQLALCHEMY_DATABASE_URI'] = ' postgres://○○○○○○'

使用者資料表(User)加密密碼欄位(pwd_hash),原本的長度設定成80字元,請改成100字元:

pwd_hash = db.Column(db.String(100),  nullable=False)

修改requirements.txt

改用PostgreSQL之後,需要額外安裝此資料庫的驅動程式“psycopg2”,請在src資料夾加入底下內容的requirements.txt檔

gunicorn
SQLAlchemy==1.3.11
Flask==1.1.1
Flask-Login==0.4.1
Flask-SQLAlchemy==2.4.1
psycopg2==2.8.4
python-dateutil==2.8.1

Flask留言板程式的src資料夾包含這些檔案:

src資料夾內容

建立與初始化資料表

透過git和Heroku CLI命令上傳src資料夾的全部檔案到Heroku空間之後,繼續在終端機執行heroku run python,啟動遠端(Heroku應用程式空間)的Python直譯器:

heroku run python

參閱12-16頁,執行db.create_all()敘述建立資料表,只不過,這個資料表是建立在雲端的PostgreSQL資料庫,而非本機的SQLite。建立資料表之後,即可輸入一些資料,最後記得輸入exit()退出遠端的Python直譯器:

輸入資料到資料表

資料表建立完畢了,執行heroku open命令開啟瀏覽器就能看到你的線上留言板了!

Posts created 470

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top