Django切換MySQL資料庫

欲过天空發表於2024-05-21

準備

軟體 版本
Django 2.1.3
Python 3.7.1

預設使用的是sqlite3

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.sqlite3',
         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
     }
}

切換為MySql:

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'book',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'POST': '3306',
    }
}

實現步驟:

我們使用Django 來操作MySQL,實際上底層還是透過Python來操作的。因此我們想要用Django來操作MySQL,首先還是需要安裝一個驅動程式。在Python3中,驅動程式有多種選擇。比如有pymysql以及mysqlclient等。

常見的Mysql驅動介紹:

  • MySQL-python:也就是MySQLdb。是對C語言操作MySQL資料庫的一個簡單封裝。遵循了Python DB API v2。但是隻支援Python2,目前還不支援Python3。
  • mysqlclient:是MySQL-python的另外一個分支。支援Python3並且修復了一些bug。
  • pymysql:純Python實現的一個驅動。因為是純Python編寫的,因此執行效率不如MySQL-python。並且也因為是純Python編寫的,因此可以和Python程式碼無縫銜接。
  • MySQL Connector/Python:MySQL官方推出的使用純Python連線MySQL的驅動。因為是純Python開發的。效率不高。

mysqlclient安裝

基於目前的環境以及版本來說,直接執行 pip install mysqlclient 是會報錯的,具體錯誤,自己執行以下就知道了。

解決辦法:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 下載指定檔案,我用的是python3.7,win環境是64位,所以下載了mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl。

然後執行:

pip3 install mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl

如果出現以下說明安裝成功:

Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.3.13

遷移資料庫

Django中透過以下命令來遷移資料庫,在每次建立Model時,執行該命令,在資料庫中生成對應的表:

python manage.py makemigrations
python manage.py migrate

相關文章