Django 2連線MySQL資料庫

lhrbest發表於2020-03-09



Django 專案部署在Windows伺服器下,則


報錯類似如下的內容:

或:

django2.2/mysql ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3

或:

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Dversion_info=(1,4,2,'post',1) -D__version__=1.4.2.post1 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include\mariadb" "-Id:\program files\python\python36-32\include" "-Id:\program files\python\python36-32\include" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\8.1\include\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\winrt" /TcMySQLdb/_mysql.c /Fobuild\temp.win32-3.6\Release\MySQLdb/_mysql.obj /Zl /D_CRT_SECURE_NO_WARNINGS

    _mysql.c

    MySQLdb/_mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory

    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 2

    ----------------------------------------

ERROR: Command errored out with exit status 1: 'f:\python\pycharmprojects\zcgl\scripts\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-install-4_3wbuoq\\mysqlclient\\setup.py'"'"'; __file__='"'"'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-install-4_3wbuoq\\mysqlclient\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\ADMINI~1\AppData\Local\Temp\pip-record-l6ntou11\install-record.txt' --single-version-externally-managed --compile --install-headers 'f:\python\pycharmprojects\zcgl\include\site\python3.6\mysqlclient' Check the logs for full command output.


或:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.

Did you install mysqlclient?




解決方法:



Django連線MySQL時預設使用MySQLdb驅動,但MySQLdb不支援Python3,因此這裡將MySQL驅動設定為pymysql,使用 pip install pymysql 進行安裝,然後在工程檔案__init__.py新增以下程式碼即可。


#安裝pymysql

pip install pymysql


#__init__.py

import pymysql

pymysql.install_as_MySQLdb()



第一種:

django降到2.1.4版本就OK了


第二種(仍使用django 2.2版本):


#找到Python環境下 django包,並進入到backends下的mysql資料夾

cd /opt/anaconda3/envs/envAGC_Mini/lib/python3.6/site-packages/django/db/backends/mysql

#檔案列表如下

å¨è¿éæ入å¾çæè¿°


# 找到base.py檔案,註釋掉 base.py 中如下部分(35/36行)

if version < (1, 3, 3):

     raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)


此時仍會會報錯,報錯資訊如下:


AttributeError: ‘str’ object has no attribute ‘decode’


#找到operations.py檔案(46行,版本不同行數不同哈~自個兒find一下),將decode改為encode

#linux vim 查詢快捷鍵:?decode

if query is not None:

    query = query.decode(errors='replace')

return query

#改為

if query is not None:

    query = query.encode(errors='replace')

return query





連線資料庫的寫法:

# Database
# 
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }
# 1. 建立資料庫,create database lhrdb default charset=utf8mb4;
# 2. 建立資料庫使用者,grant all on lhrdb.* to lhr@'%' identified by 'lhr';
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'lhrdb',
        'USER': 'lhr',
        'PASSWORD': 'lhr',
        'HOST': '127.0.0.1',
        'PORT': '3310',
    }
}


About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub、部落格園、CSDN和個人微 信公眾號( xiaomaimiaolhr)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

........................................................................................................................

● QQ群號: 230161599 、618766405

● 微 信群:可加我微 信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2020-03-01 06:00 ~ 2020-03-31 24:00 在西安完成

● 最新修改時間:2020-03-01 06:00 ~ 2020-03-31 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客戶端掃描下面的二維碼來關注小麥苗的微 信公眾號( xiaomaimiaolhr)及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2679144/,如需轉載,請註明出處,否則將追究法律責任。

相關文章