Python3替換MySQLdb,使用pymysql代替(python3連接mysql)(python3創建django默認數據庫)

python3安裝django初始化數據庫報錯

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclie

百度得到的結論是python3不支持mysqldb了,可以使用pymysql來代替

處理方法

找到(是默認生成的那個模塊,就是用命令生成django項目的時候默認生成的第一個模塊)自己項目模塊的__init__.py文件,
在這裏插入圖片描述
配置一下pymysql就好。

import pymysql
pymysql.install_as_MySQLdb()

接着報錯

說mysqlclient版本太低

 File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 37, in <module>
    raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

參考解決連接

django 使用PyMySQL連接mysql
解決Django配置pymysql因版本報錯的解決方案
主要是修改一下文件的內容,這裏記錄一下mac的安裝路徑。

MAC電腦python默認的安裝路徑

base.py的文件路徑

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/mysql

修改一下內容,註釋掉這兩行
在這裏插入圖片描述

編碼問題報錯(這個問題爲我沒遇到,先記錄一下,說不定以後用得着)

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

解決方法
修改文件operations.py,這個文件的路徑和上面的那個文件的路徑上一樣的。

#找到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

再試試

python3 manage.py  migrate

如果成功了的話會數據庫會生成這些表,這些表其實也可以不用的。
具體看文檔 編寫你的第一個 Django 應用,第 2 部分
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章