大家在使用Python的Django框架來建置網站時,預設會提供SQLite輕量資料庫來進行開發,通常適用在規模不大的小型應用程式上,但是,隨著網站功能的擴大或用戶數的增加,就會需要使用像PostgreSQL、MariaDB、MySQL及Oracle等企業級的資料庫,來提升資料的存取效能,好消息是,這四家資料庫Django官方皆有支援。
所以本文將以PostgreSQL資料庫,來示範如何在Django框架中,將預設連接的SQLite資料庫,改為PostgreSQL資料庫,讓Django所建置出來的網站,能有較佳的資料處理。其中主要的步驟包含:
- 安裝PostgreSQL
- 建立PostgreSQL資料庫
- 設定Django連接PostgreSQL
一、安裝PostgreSQL
首先,前往PostgreSQL官方下載網站,如下圖:
依照作業系統來下載安裝檔即可,本文將以Windows作業系統為例進行說明。開啟安裝檔後,可以看到如下圖的畫面:
安裝過程基本上都保留預設值,並且下一步就好。其中,有一個步驟會需要設定PostgreSQL的密碼,如下圖:
設定完成,點擊下一步來設定Port號,這邊同樣保留預設值,如下圖:
經過一段時間的安裝後,會看到設定完成的畫面,如下圖:
點擊Finish,接著在下拉選單中選擇PostgreSQL,如下圖:
點擊下一步,在Database Server的地方,選擇最新版的PostgreSQL資料庫伺服器,如下圖:
最後,勾選Skip Installation,如下圖:
接著,點擊Finish就完成PostgreSQL的安裝了。
二、建立PostgreSQL資料庫
PostgreSQL安裝完成後,接下來就可以為Django專案建立資料庫,來儲存專案所需的資料。
在剛剛的PostgreSQL安裝過程中,有幫我們安裝了一個pgAdmin工具,讓開發人員能夠有效率的進行PostgreSQL資料庫操作。
開啟的方式除了在Windows開始的地方搜尋pgAdmin關鍵字外,也可以在安裝目錄下(C:\Program Files\PostgreSQL\12\pgAdmin 4\bin),找到pgAdmin4的執行檔。
開啟後,pgAdmin會要求輸入剛剛所設定的PostgreSQL密碼,登入成功就可以看到如下畫面:
在PostgreSQL資料庫的架構中,第一層為Server Group(伺服器群組),在它下面可以有多個Server(伺服器),而在Server(伺服器)之下則可以擁有多個資料庫。
有了以上的概念後,就可以知道在建立PostgreSQL資料庫前,需要先建立一個Server Group(伺服器群組),如下圖:
在跳出的視窗中,輸入自訂的Server Group(伺服器群組)名稱即可。接著,在自訂的Server Group(伺服器群組)下新增一個Server(伺服器),如下圖:
這時候,就需要自訂Server(伺服器)的名稱,如下圖:
以及Server(伺服器)的位址及密碼。由於本文是在本地端執行,所以在Server(伺服器)位址的地方為localhost,如下圖:
有了Server(伺服器)後,就可以在它下面建立資料庫,如下圖:
在跳出的視窗中,輸入資料庫名稱,儲存即可。完成的PostgreSQL架構如下圖:
三、設定Django連接PostgreSQL
PostgreSQL資料庫建置完成,接下來,利用以下指令安裝psycopg2套件,讓Python的應用程式能夠與PostgreSQL資料庫進行溝通。
$ pip install psycopg2
安裝完成後,開啟Django專案中的settings.py檔案,在DATABASES的地方,將原SQLite資料庫修改為以下的PostgreSQL設定:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql', #PostgreSQL
'NAME': 'BOOKSTORE', #資料庫名稱
'USER': 'postgres', #資料庫帳號
'PASSWORD': '****', #資料庫密碼
'HOST': 'localhost', #Server(伺服器)位址
'PORT': '5432' #PostgreSQL Port號
}
}
接著,就可以執行以下的Django Migration(資料遷移)指令,將Django Model中的資料模型同步至PostgreSQL資料庫中。
$ python manage.py migrate
最後,開啟pgAdmin工具,在剛才自訂的PostgreSQL資料庫中,即可看到Django專案同步過來的資料表,如下圖:
四、小結
以上就是Django專案連接PostgreSQL資料庫的詳細過程,除此之外,也讓大家瞭解在Django專案中是如何進行不同資料庫的設定,希望對於正在學習的朋友們有所幫助。如果在練習的過程中,有遇到任何問題,歡迎留言提問,我將盡力為各位解答。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYqMPD_mPLEileg1IdrsIYhFSWZkYFKYmEnUqWqiqdiJv2XYnkT23CFcXoTN6HBtGCEUylgVoUIVKm6KPRPM_TjcjsSei4lGE_YmZdrWA6Ulw1fp6-o8Cn-bVwr7_FANFoC4tjTe-ak6w-atFYq-a1pipQbZvQzt4wHRNK7tywcSG0dSCnpJpqoMP5wA/s1600/Python%E7%B6%B2%E9%A0%81%E7%88%AC%E8%9F%B2%E5%85%8D%E8%B2%BB%E7%B7%9A%E4%B8%8A%E5%9F%B9%E8%A8%93.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-fK9Da5M7X1lSpbZVan4Eo-PunVnQv-YHw3EDahTUhZr5FayVLaCPqrW44W3_xwQQO-gAWZEwe_A-SxL_nltT__ArbFOgLYAAIsi3RzETT9GqVsfyfN9PXDs-xGTkxZSqj_W1SCxwD2UcrJLqHZSYIrLB-HIU75vSom4YoqoWFUQz_o4PbnvTQUbE6Bab/w640-h426/2.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg61JC7N1hyphenhyphenPpzb1hNJauunevoWrOsJxk_Upz0ywnLtIAJ2rdd1ZxChyphenhyphenFPq8GHYfywtHv2mTce5NGdwwxWFWYARhA6In0xlOzkwlRb9kM04mwgdy9Un9JgVCoLQnwV25oUcitQy2OY4TeA3gVIs067wR4StGfkldbykOeL3TfPchWfNClWKhL10ZzWaxFtf/w640-h426/3.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1XFQE0AmkZHSFB0Icq3uY4_FdsIYZ9nUqllOlo9ulRu0ri-LS1OeW2ybKOO2QRg-gyUOUr_3sMLYf7S4Q5ULZpIcXsS1pAkSMPm0OwqpbnLET51WEpQ3EoY5WaEVEWyTixBkRqp2tA7SpePM_MCIY6tnyUvu917rulqbLJTEEPsEho6Q-4Tf74DFdakd/w640-h426/4.png)
您好, 執行後出現 Server Error(500) 請問要怎麼處理. 謝謝
回覆刪除