Django:Python3.6.2+Django2.0配置MySQL
持續學習Django中。。。
Django默認使用的數據庫是python自帶的SQLlite3,但SQLlite並不適用於大型的項目,因此我將數據庫換成了MySQL,下面介紹下Django如何配置數據庫。。。
我使用的版本是:Python3.6.2+Django2.0+MySQL5.7.21
MySQL下載安裝跳過,直接說配置過程:
一、settings.py文件中修改數據庫配置為下面的內容:
# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.mysql‘,
‘HOST‘: ‘127.0.0.1‘,
‘PORT‘: ‘3306‘,
‘NAME‘: ‘mysql‘,
‘USER‘: ‘root‘,
‘PASSWORD‘: ‘zwg123456‘,
‘OPTIONS‘: {
‘init_command‘: "SET sql_mode=‘STRICT_TRANS_TABLES‘",
},
}
}
配置信息從上到下依次是:
驅動(ENGINE)、主機地址(HOST)、端口號(PORT)、數據庫(NAME)、用戶名(NAME)以及登錄密碼(PASSWORD);
關於sql_mode的設置,可參考Django文檔:https://docs.djangoproject.com/en/2.0/ref/databases/#setting-sql-mode
二、在__init_.py文件添加如下配置:
# coding=utf-8
import pymysql
pymysql.install_as_MySQLdb()
__init_.py文件是一個空文件,因為Django連接MySQL時默認使用MySQLdb驅動,但MySQLdb不支持Python3,因此這裏將MySQL驅動設置為pymysql。
三、執行數據遷移
由於Django默認使用的數據庫為SQLlite,但現在重新配置了MySQL數據庫,因此需要將原來的數據遷移過來。
配置好上面的信息後,執行數據遷移,然後重啟服務,就可以繼續開發你的系統。
四、可能遇到的問題
1、報錯:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None
MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,可以修改下面路徑的文件:
C:\Users\dell\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\django\db\backends\base\base.py
將下面的文件註釋掉即可:
if version < (1, 3, 3):
raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
2、報錯:
site-packages/pymysql/cursors.py:166: Warning: (3135, "‘NO_ZERO_DATE‘, ‘NO_ZERO_IN_DATE‘ and ‘ERROR_FOR_DIVISION_BY_ZERO‘
sql modes should be used with strict mode. They will be merged with strict mode in a future release.") result = self._query(query) site-packages/pymysql/cursors.py:166: Warning: (3090, "Changing sql mode ‘NO_AUTO_CREATE_USER‘ is deprecated. It will be removed in a future release.") result = self._query(query)
根據提示,SQL modes應該使用安全模式,即該功能將可能在未來的版本中被舍棄或者合並,這是MySQL向後兼容常見的處理方式;
解決方案:
修改django中的配置文件settings.py文件,將數據庫的配置裏設置SQL_MODES的地方註釋掉:
# Database # https://docs.djangoproject.com/en/2.0/ref/settings/#databases DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘, ‘HOST‘: ‘127.0.0.1‘, ‘PORT‘: ‘3306‘, ‘NAME‘: ‘mysql‘, ‘USER‘: ‘root‘, ‘PASSWORD‘: ‘zwg123456‘, # ‘OPTIONS‘: { # ‘init_command‘: "SET sql_mode=‘STRICT_TRANS_TABLES‘", # }, } }
然後重新運行即可!
PS:如果配置後啟動有報錯,淡定,檢查你修改的文件格式、縮進,檢查文件路徑,檢查MySQL數據庫是否成功安裝。。。
Django:Python3.6.2+Django2.0配置MySQL