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數據庫是否成功安裝。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM