【Python连接Mysql】【已解决】AttributeError: module ‘pymysql._auth‘ has no attribute ‘scramble_old_password‘

AttributeError: module 'pymysql._auth' has no attribute 'scramble_old_password'问题解决

前言

遇到此问题,百度和谷歌皆无果 世界独此一家(百度仅有的两篇相关内容,都没有真正解决问题),最终在自己的尝试中解决。

此问题在win10系统下尚未遇到,在win7版本的电脑上出现。

环境说明:

相关环境版本信息
系统Windows7 32位
Pythonpython 3.7
Mysql5.7.4

由于环境和问题情境的差异,此方案仅供参考。

问题描述

在正常使用 pymysql.connect() 方法连接 mysql 时出现错误。运行的代码如下:

import pymysql # 导入 pymysql 模块
# 打开数据库连接,参数 1:主机名或 IP,参数 2:用户名,参数 3:密码,参数 4:数据库名称
db = pymysql.connect(host='127.0.0.1',port=3306, user='root', password='123456', db='test')

报错信息:

AttributeError: module 'pymysql._auth' has no attribute 'scramble_old_password'

解决方法

  1. 检查 Mysql安装路径中是否有连接 Python的驱动,默认路径“C:\Program Files\MySQL”,驱动名称为“MySQL Connector Python 8.0”。若无此驱动,在官网MySQL Community Downloads下载(需要检查自己系统的版本,是32位还是64位)。安装过程中选好 Mysql 的安装路径,其余默认即可。
  2. 新 Python中 pymysql的版本:pip install pymysql==0.6.7(默认安装版本为pymysql-1.0.2)。

其他

本案例有其特殊性,在连接 Linux 的过程中发现终端中显示的数据库内容和 Navicat 中显示的内容不一致的问题。在之后的尝试中发现 Python 连接 Mysql 显示的内容与 Navicat 的一致。此问题的解决方案:

  1. Navicat 连接 Mysql,确保登录用户为“root”,与 Python中使用的用户一致。
  2. 创建 Python中所连接的数据库,此案例中为“test”。
  3. 正常编写 Python 代码,对数据库进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值