之前做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

參考資料