在Heroku中的Django專案不能使用sqlite做為資料庫,使用postgres資料庫是不錯的選擇。
本篇說明如何在Heroku中的Django專案使用postgres資料庫。
Heroku啟動postgres資料庫
首先檢查Heroku是否啟動postgres資料庫:在命令提示字元視窗執行「heroku login」登入Heroku,檢查Heroku是否啟動postgres資料庫的語法為:
heroku addons -a Heroku中app名稱
例如Heroku中app名稱為「ehappystudent」:
heroku addons -a ehappystudent
如果出現上圖Add-on訊息表示postgres資料庫已啟動,否則執行下列指令啟動postgres資料庫:
heroku addons:create heroku-postgresql:hobby-dev
Heroku的postgres資料庫有多種計費方式,「hobby-dev」是免費的方案,上面指令就是建立免費方案。此免費方案提供10000則資料的容量以及最多20個使用者同時連線操作,足夠一般需求。
取得postgres資料庫設定
在瀏覽器開啟Heroku的app頁面,於Resources頁籤點選「Heroku Postgres」。
於Settings頁籤點選Database Credentials項目右方的「view credentials」鈕。
下圖是Heroku的postgres資料庫伺服器資訊,記錄下來,將在要上傳到Heroku的Django專案中使用。
修改<settings.py>設定檔
此處以文淵閣工作室「Python與LINEBOT機器人全面實戰特訓班」第三章的students專案為例:將<settings.py>檔第77-82列程式改為前面記錄Heroku的postgres資料庫伺服器資訊。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'd6sumdeh113ed6',
'USER': 'mrtirkhfsiqtml',
'PASSWORD': '464………233',
'HOST': 'ec2-35-174-127-63.compute-1.amazonaws.com',
'PORT': '5432',
}
}
上傳Heroku
依照在Heroku建立網站的程序將<students>的Django專案上傳到Heroku。
上傳後Heroku的postgres資料庫尚未同步,在命令提示字元視窗執行下列命令同步資料庫:
heroku run python manage.py makemigrations
heroku run python manage.py migrate
如此就完成了!
在瀏覽器開啟「https://ehappystudent.herokuapp.com/listall/」網頁,結果如下圖。(資料庫為空的)
開啟「https://ehappystudent.herokuapp.com/insert/」網頁會新增一筆資料,表示postgres資料庫運作正常。
沒有留言:
張貼留言