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