Django 是一個免費且開源的網頁框架,基於 Python。Django 於 2005 年首次發布,秉承「快速開發與乾淨、務實的設計」之座右銘。該框架部署在網頁伺服器上,能快速產生具有豐富功能、安全性和擴充性的網頁前端。
任何網頁應用程式都依賴資料庫來儲存其內容。Django 作為一個現代框架,支援多種標準資料庫程式,例如:PostgreSQL, SQLite, MySQL等。本指南將展示如何將 Django 應用程式連接到 MySQL 資料庫.
先決條件
在開始進行 Django 和資料庫連接之前,您需要滿足某些先決條件:
- 一個合適的網頁伺服器。在本指南中,我們將使用 Ubuntu server.
- 一個配置妥當的 Python 3 development environment.
- 一個資料庫應用程式。這裡有一份關於installing and using MySQL.
安裝與設定 Python 3
Django 是用 Python 編寫的。運行任何 Python 應用程式都需要在系統中安裝 Python 二進位檔案。Ubuntu 預設已安裝 Python。在這裡,我們將使用 Python 3。請在終端機中執行以下命令。首先,更新 APT 快取並升級(若有)所有已安裝的套件:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 可直接從 Ubuntu 官方套件伺服器取得。套件
python-is-python3 會建立一個指向 python 二進位檔案的軟連結,指向
python3 ,以便於使用:
|
1 |
$ sudo apt install python3 python-is-python3 |
接下來,驗證安裝是否成功:
|
1 2 |
$ python3 --version $ python --version |
之後,我們需要 pip。它是標準的 Python 套件管理器,負責管理不屬於標準函式庫的其他 Python 函式庫。請注意,我們正在安裝 pip3(適用於 Python 3):
|
1 |
$ sudo apt install python3-pip |
最後,我們需要一些額外的套件來建立一個健全的程式設計環境:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
安裝與設定 MySQL
本節將簡要示範如何安裝和設定 MySQL。它可以從預設的 Ubuntu 套件庫中取得:
|
1 |
$ sudo apt install mysql-server |
如果安裝成功,MySQL 將開始在背景運行。驗證其是否正常運作:
|
1 |
$ systemctl status mysql |
MySQL 伺服器已啟動並運行。我們現在可以安全地過渡到 Django 應用程式的開發。
使用 Django
-
建立範例 Django 應用程式
我們網頁應用程式的基礎工作需要 Django 專案骨架。它包含建立健全網頁應用程式所需的所有必要工具和函式庫。首先,我們將為我們的 Django 應用程式建立一個專用目錄。建議將目錄命名為有意義且與我們即將建立的應用程式一致的名稱。在此示範中,我們將其命名為 myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
我們需要 Python 的 venv 模組在該目錄中建立虛擬環境。使用 APT:
|
1 |
$ sudo apt install python3-venv |
然後,導航到該目錄並建立虛擬環境。為了清楚起見,我們將該環境命名為 demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
接下來,透過執行 activate 指令碼來啟用虛擬環境:
|
1 |
$ . demoapp_env/bin/activate |
我們現在將在這個專用的虛擬環境中安裝 Django。Pip 將下載並安裝一些額外的組件:
|
1 |
$ pip install django |
Django 已安裝並準備就緒。呼叫 django-admin 命令來建立一個新的 Django 專案。之後,給應用程式一個適當的名稱:
|
1 |
$ django-admin startproject demoapp |
它將建立一個包含所需專案檔案和目錄的示範專案:
|
1 |
$ ls -l |
專案骨架已準備就緒。接下來,我們需要對其進行適當的設定以實現我們的目標。
-
編輯 Django 專案設定
專案的所有設定都儲存在檔案 settings.py 中。它位於 Django 專案目錄內。我們將首先設定適當的時區,並列出可以連線到 Django 應用程式的主機。在文字編輯器中開啟設定檔:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
向下捲動腳本並找到條目 TIME_ZONE。為了進行示範,時區設定為 America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
供參考,以下指令將列印 Linux 中所有支援的時區:
|
1 |
$ timedatectl list-timezones |
接下來,捲動到條目 ALLOWED_HOSTS。它控制哪些機器可以存取該應用程式。為了進行示範,它僅包含 localhost:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
|
1 |
$ python manage.py migrate |
現在,我們需要為 Web 應用程式建立一個管理員帳戶。此帳戶將用於存取 Django 管理介面。執行以下指令:
|
1 |
$ python manage.py createsuperuser |
它會要求輸入使用者名稱、電子郵件和密碼。該應用程式現在已準備好連線到資料庫。
MySQL 連線
-
安裝 MySQL 連接器和開發函式庫
為了將 MySQL 整合到 Django 應用程式中,我們需要一些額外的 Python 3 函式庫來提供必要的工具。我們將使用資料庫連接器 mysqlclient。它是 MySQLdb.
的分支。確保我們已安裝 python3-dev:
|
1 |
$ sudo apt install python3-dev |
我們還需要一些額外的 Python 和 MySQL 標頭檔與函式庫:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
安裝完成後,使用 pip 來安裝 Python 模組 mysqlclient。它可能會產生一些可以忽略的錯誤訊息:
|
1 |
$ pip install mysqlclient |
-
設定專用資料庫
下一步是為我們的 Django 應用程式設定專用資料庫和資料庫使用者。以 root 使用者身分啟動 MySQL shell:
|
1 |
$ sudo mysql -u root |
要檢查目前所有可用的資料庫,請執行以下查詢:
|
1 |
$ SHOW DATABASES; |
讓我們為 Django 應用程式建立一個專用資料庫。給它一個與專案名稱一致的適當名稱:
|
1 |
$ CREATE DATABASE demoapp_data; |
然後,驗證建立結果:
|
1 |
$ SHOW DATABASES; |
現在,建立一個專用的 MySQL 使用者。我們將此使用者設定為資料庫的擁有者。Django 應用程式將使用此使用者的憑證來操作 MySQL 資料庫:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
授予使用者 demoapp_user 對資料庫 demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
要使權限變更生效,請重新載入 MySQL 授權表:
|
1 |
$ FLUSH PRIVILEGES; |
-
將資料庫連線到 Django 應用程式
最後,我們將設定 Django 應用程式使用該資料庫進行資料儲存。開啟設定腳本 settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
向下捲動到條目 DATABASES 並輸入以下程式碼:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
儲存檔案並關閉編輯器。下一步是設定前面程式碼中描述的設定檔。使用 sudo 在描述的位置開啟文字檔案:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
此設定檔將包含有關 Django 專用資料庫以及我們在 MySQL 伺服器中建立的使用者的資訊。在檔案末尾新增以下幾行:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
測試 MySQL 連線
現在是驗證 MySQL 連線是否正常運作的時候了。如果 Django 伺服器運作沒有問題,那麼連線就正常。否則,就是有問題。首先,套用對 Django 專案所做的所有變更:
|
1 |
$ python manage.py migrate |
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
|
1 |
$ http://<server_ip_address>:8000 |
太棒了!我們已成功進入 Django 的成功頁面。這也驗證了 MySQL 連線運作正常。任務完成後,您可以安全地退出虛擬環境:
|
1 |
$ deactivate |
結語
在本指南中,您已了解結合 Django 和 MySQL 的基礎知識。我們建立了一個 Django 應用程式,並展示了如何將其與 MySQL 資料庫連接。奧妙之處在於 Django 設定檔 settings.py。我們還修改了一些基本設定,例如 ALLOWED_HOSTS 和 TIME_ZONE。Django 非常靈活。除了 MySQL 之外,它還支援其他 SQL 伺服器(如 PostgreSQL)、伺服器引擎(如 Nginx)等。
您也可以查看我們關於安裝、設定和使用 Django 的最佳實踐指南:
- 在 Ubuntu 20.04 上安裝 Django 網頁框架
- 在 Ubuntu 20.04 上使用 PostgreSQL、Nginx 和 Gunicorn 設定 Django
- 建立 Django 模型:教學課程
祝您開發愉快!










留言
目前尚無留言。成為第一個留言的人吧。