关于 python3 不支持 MySQLdb 的说法

在使用Django开发项目的时候,连接数据库使用的mysql,这个看网上的资料说python3不支持MySQLdb,而Django默认使用的是MySQLdb,需要更改为pymysql,所以在init.py的文件中添加如下代码

    import pymysql
    pymysql.install_as_MySQLdb()

添加完以后运行的时候出现了报错,

关于python3不支持MySQLdb的说法

错误信息告诉我们我们的版本是0.9.3,这个是我的pymysql的版本

关于python3不支持MySQLdb的说法
所以我们需要修改配置文件base.py,关闭掉版本检测
我的位置是这个
/usr/local/lib/python3.7/site-packages/django/db/backends/mysql/base.py
再次执行又会报错

关于python3不支持MySQLdb的说法

需要再次修改
/usr/local/lib/python3.7/site-packages/django/db/backends/mysql/operations.py
这个文件,把文件里面146行改成encode
上面的文件路径是我本人的本地的路径,具体的还要看你们python安装的路径
这个是有已经可以成功的运行迁移,

通过这个问题,我发现了整个解决方法,就是安装pymysql当作MySQLdb的替代品,但是当我用python3.7测试MySQLdb的时候,我发现了更奇怪的问题,居然可以使用MySQLdb,如下

关于python3不支持MySQLdb的说法

这个时候我产生了新的疑惑,MySQLdb不是不支持python3吗?那这里为什么可以用呢?
于是我查看了MySQLdb的版本,如下图:

关于python3不支持MySQLdb的说法

版本是1.4.2.post1
然后我去看了一下本地安装的模块

关于python3不支持MySQLdb的说法

这里并没有MySQLdb这个模块,不过一个模块版本号却引起了我的注意,那就是mysqlclient 这个模块,他的版本号居然是1.4.2.post1,既然这样那我们去看看这个模块的具体表述吧,在https://pypi.org/ ,里面我们查找到了这个模块
如下:
关于python3不支持MySQLdb的说法
这个时候恍然大悟,原来他是属于MySQLdb的,而MySQLdb真的项目名叫MySQLdb1,他的最高版本是1.2.5,mysqlclient代替了他成为了MySQLdb在运行,到这里我们就整理清楚了整个问题。也非常感谢网友-永夜初晗凝碧天ᵖʸᵗʰᵒ 的支持与帮助。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!