使用 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就可以了。