1. 程式人生 > >Django:Python3.6.2+Django2.0配置MySQL

Django:Python3.6.2+Django2.0配置MySQL

cli database IT 添加 djang 合並 self. bsp 檢查

持續學習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