mysql不支持python3吗_关于 python3 不支持 MySQLdb 的说法

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

   import pymysql
    pymysql.install_as_MySQLdb()

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

55670c3fa87fa4914252a9e435cf3911.png

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

c7b2213b444acb665147dbb801237deb.png

所以我们需要修改配置文件 base.py, 关闭掉版本检测

我的位置是这个

/usr/local/lib/python3.7/site-packages/django/db/backends/mysql/base.py

再次执行又会报错

6d3f2e69914fc76d7b58a1f801f55348.png

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

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

95fa1ec5ab0a9487b93adcdc654e19ba.png

这个时候我产生了新的疑惑,MySQLdb 不是不支持 python3 吗?那这里为什么可以用呢?

于是我查看了 MySQLdb 的版本,如下图:

9393bb24e1f11e3099f3c85198e4751b.png

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

7fcb132324cef4d0dd325e6e7d4dfe53.png

这里并没有 MySQLdb 这个模块,不过一个模块版本号却引起了我的注意,那就是 mysqlclient 这个模块,他的版本号居然是 1.4.2.post1, 既然这样那我们去看看这个模块的具体表述吧,在 https://pypi.org/ ,里面我们查找到了这个模块
如下:

7df7bf9d6e7bdced816029c79ca7836c.png

这个时候恍然大悟,原来他是属于 MySQLdb 的,而 MySQLdb 真的项目名叫 MySQLdb1, 他的最高版本是 1.2.5,mysqlclient 代替了他成为了 MySQLdb 在运行,到这里我们就整理清楚了整个问题。

python开发IT交流群:887934385 分享源码等相关资料

更多精彩文章请关注公众号python社区营其它相关文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值