許多使用 Django 架站的開發者,專案初期可能使用的是 MySQL,若是專案轉為單機使用、測試用途,或需要簡化架構,就會考慮轉向輕量的 SQLite。本篇教學會用最白話的方式,教你如何在 Windows 系統下,將 Django 專案資料庫從 MySQL 改成 SQLite,並成功把原本的資料搬過去。
目標
- 將 Django 專案改用 SQLite 作為資料庫
- 匯出原資料(MySQL)並匯入 SQLite
匯出原有資料(MySQL)
在 MySQL 資料庫連線正常下,我們可以透過 Django 的 dumpdata
指令,將資料匯出為 JSON 格式。
- 解決 Windows 中文編碼問題,建立
export_json.py
檔案:
import os將
import django
import io
from django.core.management import call_command
# 1. 告訴 Django 你的 settings 檔在哪裡
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings") # ← 修改這裡
# 2. 初始化 Django
django.setup()
# 3. 匯出資料到 UTF-8 格式 JSON 檔案
with io.open('data.json', 'w', encoding='utf-8') as f:
call_command('dumpdata', '--natural-primary', '--natural-foreign', '--indent', '2', stdout=f)
your_project_name
改成你 Django 專案的資料夾名稱(就是包含 settings.py
的那個資料夾名稱,例如 myproject.settings
)如何找出專案名,假設你的資料夾結構像這樣:
project/
├── manage.py
├── myproject/ ← 這裡就是專案名稱
│ ├── __init__.py
│ ├── settings.py ← 這裡表示專案名稱為 `myproject`
│ └── ...
執行指令產生資料檔案:
python export_json.py
修改 Django 設定為 SQLite
打開 Django 專案中的 settings.py
,找到 DATABASES
區段,修改為:
默認放在頁盤根目錄
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / "db.sqlite3",
}
}
自訂放置位置
你也可以自訂放在其他磁碟區,如 D 槽:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'D:/data/db.sqlite3', # 或使用 r'D:\data\db.sqlite3'
}
}
確保該資料夾存在,並有寫入權限。
重新建立資料表並匯入資料
先建立 SQLite 資料表:
python manage.py migrate
將 JSON 資料載入:
python manage.py loaddata data.json
成功載入後,資料就轉移完成。
圖形化管理工具(DB Browser for SQLite)
- 專為 SQLite 設計的圖形化管理工具
- 可編輯表格、檢視資料、執行 SQL
- 下載網址:https://sqlitebrowser.org/
Django 專案已經成功改用 SQLite 做為資料庫,而且資料也順利轉移過來。SQLite 適合輕量單機使用、快速測試與開發,且無需額外伺服器支援。
歡迎收藏與分享,如有問題也可留言討論。