关于 python3 不支持 MySQLdb 的说法

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

    import pymysql
    pymysql.install_as_MySQLdb()

添加完以后运行的时候出现了报错,
在这里插入图片描述
错误信息告诉我们我们的版本是 0.9.3,这个是我的 pymysql 的版本
关于 python3 不支持 MySQLdb 的说法_第1张图片
所以我们需要修改配置文件 base.py, 关闭掉版本检测
我的位置是这个
/usr/local/lib/python3.7/site-packages/django/db/backends/mysql/base.py
再次执行又会报错
在这里插入图片描述
需要再次修改
/usr/local/lib/python3.7/site-packages/django/db/backends/mysql/operations.py
这个文件,把文件里面 146 行改成 encode
上面的文件路径是我本人的本地的路径,具体的还要看你们 python 安装的路径
这个是有已经可以成功的运行迁移,
通过这个问题,我发现了整个解决方法,就是安装 pymysql 当作 MySQLdb 的替代品,但是当我用 python3.7 测试 MySQLdb 的时候,我发现了更奇怪的问题,居然可以使用 MySQLdb, 如下
关于 python3 不支持 MySQLdb 的说法_第2张图片
这个时候我产生了新的疑惑,MySQLdb 不是不支持 python3 吗?那这里为什么可以用呢?
于是我查看了 MySQLdb 的版本,如下图:
关于 python3 不支持 MySQLdb 的说法_第3张图片
版本是 1.4.2.post1
然后我去看了一下本地安装的模块
关于 python3 不支持 MySQLdb 的说法_第4张图片
这里并没有 MySQLdb 这个模块,不过一个模块版本号却引起了我的注意,那就是 mysqlclient 这个模块,他的版本号居然是 1.4.2.post1, 既然这样那我们去看看这个模块的具体表述吧,在 https://pypi.org/ ,里面我们查找到了这个模块
如下:
关于 python3 不支持 MySQLdb 的说法_第5张图片
这个时候恍然大悟,原来他是属于 MySQLdb 的,而 MySQLdb 真的项目名叫 MySQLdb1, 他的最高版本是 1.2.5,mysqlclient 代替了他成为了 MySQLdb 在运行,到这里我们就整理清楚了整个问题。
python开发IT交流群:887934385 分享源码等相关资料
更多精彩文章请关注公众号python社区营其它相关文章!

你可能感兴趣的:(Python)