2022年6月26日 星期日

Django使用postgres資料庫-Heroku

在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資料庫運作正常。


沒有留言:

張貼留言