2022年6月26日 星期日

Django使用postgres資料庫-本機

 Django預設使用的資料庫是sqlite,因sqlite是單檔資料庫,若將Django專案上傳到Heroku,sqlite資料庫在一段時間(通常是幾個小時)就會被還原。而Heroku預設的資料庫為postgres,因此如果是準備上傳到Heroku的Django專案,最好是使用postgres做為資料庫。

本篇說明如何在本機的Django專案使用postgres資料庫。

安裝postgres資料庫

開啟「https://www.postgresql.org/download/」網頁,點選「Downloads」項目的「Windows」。

點選「Download the installer」。

依照作業系統下載:此處下載Windows x86-64的11.8版。

雙擊下載的<postgresql-11.8-1-windows-x64.exe>進行安裝,按預設值安裝並自行設定密碼。

建立資料庫管理者

安裝postgres資料庫時,也安裝了postgres的管理工具pgadmin,我們可以使用此工具來建立資料庫管理者及資料庫。

首先建立資料庫管理者帳號:執行「程式集 / PostgreSQL 11 / pgAdmin 4」。

在「Login/Group Roles」按滑鼠右鍵,於快顯功能表點選「Create / Login/Group Role」。

Genaral頁籤的Name欄位輸入管理者名稱(此處輸入admin),Definition頁籤的Password欄位輸入密碼(此處輸入123456),Account expires欄位為有效期期限,輸入一個較長時間。

Privileges頁籤的Can login? 欄位改為「Yes」,按「Save」鈕完成建立管理者。

新增資料庫

在「Databases」按滑鼠右鍵,於快顯功能表點選「Create / Database」。

Database欄位輸入資料庫名稱(此處輸入testdb),Owner欄位選擇管理者名稱admin,按「Save」鈕完成建立資料庫。

安裝模組

使用postgres資料庫需使用psycopg2模組,在命令提示字元視窗中以下列命令安裝:

pip install psycopg2

修改<settings.py>設定檔

Django預設是以sqlite做為資料庫,所以<settings.py>的資料庫設定為sqlite,必須將其修改為使用postgres資料庫。

此處以文淵閣工作室「Python與LINEBOT機器人全面實戰特訓班」第三章的students專案為例:將<settings.py>檔第77-82列程式改為下列程式。

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.postgresql',

        'NAME': 'testdb',

        'USER': 'admin',

        'PASSWORD': '123456',

        'HOST': 'localhost',

        'PORT': '5432',

    }

}

切換到students專案資料夾,刪除<db.sqlite3>檔。在命令提示字元視窗執行下列命令同步資料庫:

python manage.py makemigrations

python manage.py migrate

如此就完成Django專案的postgres資料庫了!

以「python manage.py runserver」啟動本機伺服器,在瀏覽器執行「http://127.0.0.1:8000/listall/」,結果如下圖。(資料庫為空的)

執行「http://127.0.0.1:8000/listall/」會新增一筆資料,表示postgres資料庫運作正常。


沒有留言:

張貼留言