python3.7+django2.2 連接mysql報錯處理(轉)

報錯環(huán)境 python=3.6.5,django=2.2,PyMySQL=0.9.3

……

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

解決方法:

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環(huán)境下 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文件(146行),將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

OK~ 不再報錯

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容