在 Django 使用 MySQL 資料庫

之前做 Ubike ETL 系統時 (用Python 抓取 Ubike 開放資料),使用 MySQL 當作資料庫,用 MySQLdb 這個套件下 SQL 連接 MySQL。

可是如果要套一些套件,如 Django Endless Pagination,就會出問題。因為資料需要建立 Django Model,而直接下 SQL 撈出來的資料,沒辦法讓套件做自動分頁。

同時有原生 SQlite 與自己建立的 MySQL 兩個資料庫,不是好的做法,應該要更改 Django 資料庫設定。


下載並安裝 MySQLdb

安裝必要的 Develop Package

sudo apt-get install libmysqlclient-dev python-dev

安裝 MySQLdb

pip install MySQL-python

修改 settings.py 設定

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'data',                       # Or path to database file if using sqlite3.
        'USER': 'user',                       # Not used with sqlite3.
        'PASSWORD': 'password',               # Not used with sqlite3.
        'HOST': '',                           # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                           # Set to empty string for default. Not used with sqlite3.
    }
}

將原有的 MySQL 資料轉換成 Model

如果開發到一半才將資料庫轉成 MySQL,或是在 Django 中想要使用 MySQL 中的資料表,就必須在 Model 中寫好資料格式。

但是已經建好表,要一個一個寫進 Model 不就很麻煩?好在 Django 有個貼心功能,使用 inspectdb 就能把資料格式都匯入 Model囉! 顯示轉換後的 Model 內容

python manage.py inspectdb

將資料格式寫入 Model.py

python manage.py inspectdb > models.py

參考資料

Jerry
Jerry

樂於分享的軟體工程師,曾在新創與大型科技公司實習,獲得黑客松競賽冠軍,擔任資安研討會講者。長期熱衷於資訊安全、雲端服務、網路行銷等領域,希望將科技知識分享給更多人。內容轉載請來信:jlee58tw@gmail.com

發表回應