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