pymysql版本0.9.3,django2.X需要>=1.3.13的版本

环境

django版本:2.2.1

python版本:3.6.6

在搭建django项目,配置mysql数据库时遇到无法迁移数据库的问题,错误信息如下:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
问题分析过程

由错误信息,可大致看出是一个叫mysqlclient的包版本不匹配导致的问题。

搜索引擎检索相关错误,得知:python访问mysql需要安装对应的驱动包,即将mysql的API接口转换成python格式供数据库应用软件开发者直接调用的第三方库。django2.2默认使用“mysqlclient”这个库去连接mysql,而网上很多教程中使用的是“pymysql”。这两个库有什么区别呢?继续搜索。

pymysql、mysqlclient与mysqldb

pypi中关于pymsql的说明:纯Python MySQL驱动程序–MySQL的Python接口.PyMySQL 最新版本0.9.3,官方文档说:“This package contains a pure-Python MySQL client library”–用纯python语言开发的mysql驱动库,大部分API与mysqlclient和MySQLdb兼容,python2只支持2.7版本,python3版本支持3.4及以上版本,mysql版本要求5.5版本及以上。

pypi中关于mysqlclient的说明:MySQL驱动程序–MySQL的Python接口.最新版本1.4.x,支持python3。django文档说“mysqlclient is a native driver. It’s the recommended choice”–mysqlclient是一个本机驱动程序。这是推荐的选择

pypi中关于mysqldb的说明:MySQL驱动程序–MySQL的Python接口. 最新版本MySQL-python 1.2.x。目前支持MySQL-3.23到5.5和Python-2.4到2.7。未来版本将支持Python-3.0。支持PyPy。

综上:
1,三者都可作为python和mysql交互的接口使用。
2,django文档说“Django需要mysqlclient 1.3.13或更高版本。”即django2.2.x不支持0.9.3版本了。
3,我们是这么导入pymysql的:

import pymysql
pymysql.install_as_MySQLdb()

install_as_MySQLdb()方法说明:“调用此函数后,导入MySQLdb或
_mysql将不自觉地实际使用pymysql。” 那pymysql的版本是0.9.3,检验版本时就过不了。

解决办法:

1,不使用pymysql而是使用mysqlclient ,pip安装即可,导入方式如下:

import MySQLdb

2,降低django版本为1.x.x

3,使用mysqlclient

你可能感兴趣的:(django)