首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Django 本地環境整合 MySQL 完整教學 (含驅動安裝、配置避坑、驗證步驟)

     編輯:MySQL 綜合教學

前置條件

  • 已安裝 MySQL Server (本文以 5.6/5.7 為例)。
  • 已建立 Django 專案 (版本 1.4~2.x 均適用,核心配置不變)。
  • 作業系統:macOS / Linux / Windows 均可,命令略有差異。

步驟 1:建立資料庫與用戶

進入 MySQL 客戶端:

# macOS/Linux (假設已配置 PATH)
mysql -u root -p
# Windows (進入安裝目錄 bin 下)
mysql.exe -u root -p

執行 SQL:

CREATE DATABASE myproject_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'django_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON myproject_db.* TO 'django_user'@'localhost';
FLUSH PRIVILEGES;

重點:必須先建立資料庫,Django migrate 不會自動建庫。

步驟 2:修改 settings.py 資料庫配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myproject_db',          # 步驟 1 建立的資料庫名
        'USER': 'django_user',           # 步驟 1 建立的用戶
        'PASSWORD': 'strong_password',   # 步驟 1 設定的密碼
        'HOST': '127.0.0.1',             # 本機用 127.0.0.1 (TCP),非 localhost (Unix Socket)
        'PORT': '3306',                  # 預設埠,可省略
        'OPTIONS': {
            'charset': 'utf8mb4',        # 關鍵:支援 Emoji 與生僻字
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",  # 建議開啟嚴格模式
        },
    }
}

關鍵參數說明

  • HOST:建議用 127.0.0.1。若用 localhost,Django 驅動會嘗試 Unix Socket 連線,權限/路徑問題較多。
  • OPTIONS.charset:務必設為 utf8mb4,對應 MySQL 端 utf8mb4,否則存 Emoji 會報錯。
  • init_command:設定 SQL 模式,避免資料截斷靜默發生。

步驟 3:安裝 Python MySQL 驅動

Django 官方推薦 mysqlclient (C 語言編譯,效能最佳,支援 Python 3)。

# macOS (需先安裝 MySQL client library)
brew install mysql-client
export PATH="/usr/local/opt/mysql-client/bin:$PATH"
pip install mysqlclient

# Ubuntu/Debian
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
pip install mysqlclient

# Windows (預編譯 wheel)
pip install mysqlclient
# 若報錯嘗試
pip install --only-binary :all: mysqlclient

舊版驅動:MySQL-python (Python 2 only, 已停維護)、pymysql (純 Python, 效能較差,需 pymysql.install_as_MySQLdb() 猴子補丁)。**生產環境強烈建議 mysqlclient**。

步驟 4:驗證連線與遷移

# 進入專案目錄 (含 manage.py)
python manage.py check              # 檢查配置語法
python manage.py makemigrations     # 生成遷移檔
python manage.py migrate            # 執行遷移,建立表結構
python manage.py createsuperuser    # 建立管理員帳號 (可選)
python manage.py runserver          # 啟動開發伺服器驗證

常見錯誤與解決方案

錯誤訊息原因解決
django.db.utils.OperationalError: (1045, "Access denied for user...")帳號/密碼/主機不匹配核對 USER/PASSWORD/HOST;確認 MySQL user.Host 欄位允許對應 IP
django.db.utils.OperationalError: (1049, "Unknown database...")資料庫不存在先在 MySQL 執行 CREATE DATABASE
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module驅動未安裝或編譯失敗安裝系統依賴 (mysql-devel, python-dev) 後 pip install mysqlclient
Incorrect string value: '\\xF0\\x9F...'資料庫/表/連線編碼非 utf8mb4資料庫/表轉 utf8mb4;settings.py 加 'OPTIONS': {'charset': 'utf8mb4'}
Can't connect to MySQL server on 'localhost' (10061)Windows 下 localhost 解析/服務未啟動用 127.0.0.1;確認 MySQL 服務運行中

進階:使用連線池 (生產環境推薦)

安裝 django-db-geventpool 或 django-mysql-pool,在 DATABASES['default'] 加入:

'ENGINE': 'django_mysqlpool.backends.mysqlpool',
'OPTIONS': {
    'MAX_CONNS': 20,
    'RECYCLE': 3600,
}

總結檢查清單

  1. ✅ MySQL 建庫 utf8mb4、建用戶授權。
  2. ✅ settings.py 配置 HOST=127.0.0.1、charset=utf8mb4。
  3. ✅ pip install mysqlclient 成功 (系統依賴已裝)。
  4. ✅ migrate 無錯誤、runserver 正常訪問。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved