在 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

請支持《傑瑞窩在這》原創文章。原文標題:在 Django 使用 MySQL 資料庫,原文網址:https://jerrynest.io/django-mysql-database/
$ python manage.py inspectdb > models.py

參考資料

樂於分享、盡情玩耍的全端工程師。長期關注資訊安全、雲端運算與網路行銷等議題,曾獲得玉山黑客松金牌,擔任過軟體測試實習生、技術文案寫手。

發表迴響