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資料庫運作正常。
沒有留言:
張貼留言