使用 django
很多人都會遇到這個問題。
這是因為你使用了pymysql
, 而pymysql
的最高版本就只有0.9.3
而django
默認使用的是mysqlclient
作為數據庫驅動,所以正確的方式是
卸載pymysql
, 然后pip install mysqlclient
。
那為什么網上的解決方式大多都是仍然使用pymysql
,然后修改django
的源碼,從而跳過數據庫驅動的版本檢測呢?
主要原因是安裝mysqlclient
太麻煩了,很可能安裝失敗。。。。
這里簡單的說一下這兩種方式的區別
pymysql
是使用純python
語言寫的,所以它的安裝很簡單,只需要
pip install PyMySQL
但是pymysql
這個驅動有一個很大的特點,就是慢
而 mysqlclient
是一個使用了C
語言開發的驅動,所以速度很快,但是它依賴了很多系統層面的軟件,所以安裝起來比較麻煩,需要我們額外安裝依賴。
關于怎么安裝mysqlclient
https://pypi.org/project/mysqlclient/
這個文檔里介紹的很詳細了。
1. 安裝依賴
-
sudo apt-get install python-dev default-libmysqlclient-dev
# Debian / Ubuntu -
sudo yum install python-devel mysql-devel
# Red Hat / CentOS -
brew install mysql-client
# macOS (Homebrew)
實測,在 macOS
下還需要安裝mysql
brew install mysql
2. 如果是 python3 ,還需要安裝額外的依賴
sudo apt-get install python3-dev
# debian / Ubuntusudo yum install python3-devel
# Red Hat / CentOS
3. 在項目環境中安裝mysql-client
pip install mysqlclient
最后卸載我們已經下載的pymysql
pip uninstall PyMySQL
然后注銷掉下面兩行
import pymysql
pymysql.install_as_MySQLdb()
這個使用重啟 django
就可以了。