mysqlclient 1.3.13 or newer is required; you have 0.9.3

使用 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 / Ubuntu

  • sudo yum install python3-devel # Red Hat / CentOS

3. 在项目环境中安装mysql-client

  • pip install mysqlclient

最后卸载我们已经下载的pymysql

  • pip uninstall PyMySQL

然后注销掉下面两行

import pymysql
pymysql.install_as_MySQLdb()

这个使用重启 django就可以了。

你可能感兴趣的:(mysqlclient 1.3.13 or newer is required; you have 0.9.3)