又是因为在做数据分析的实战项目时候发生了一系列的踩坑、填坑过程(不止标题上面的问题,限于字数),于是随手记录下来希望后面的朋友能成功避开!!!

因为项目是用Python连接MySQL来进行数据分析的,所以一开始的步骤就要连接MySQL,这里采用的是SQLALchemy这个框架,于是当我写好这段代码运行的时候,提示报错为:

没有“mysql。。。”于是就去anaconda里面安装了这个,重新运行,发现出现了另一个坑:

想起之前看到在这个项目下面评论里面有人说这个问题的解决办法是
把一开始连接MySQL数据那段代码里面的“mysqlconnector”换成“pymysql”就可以,想说人家既然踩过这个坑应该也是可以解决的,于是就换成了pymysql来用。

当我以为可以顺利通过Apriori算法挖掘出商品的频繁项集和关联规则的时候,现实又给了我一个狠狠的耳光😂报错为
KeyError:255

于是又开始谷歌解决的办法,看了好些都说出现这个是因为MySQL8.0及以上得版本更新了很多字符集,但是这些字符集长度超过255了,所以旧版的PyMySQL不支持长度超过255的字符。。。 所以解决办法就是:
更新PyMySQL即可解决
OK,查看自己的pymysql版本:

果真没有8.0,更新它至最新版本:

但是重新运行的时候还是报255。。。

搜了半天暂时还没找到解决办法(升级也不管用,明天再研究一下,后面补上!)就换回了之前的mysqlconnector😂。

当然运行后还是之前的那个问题:
NotSupportedError: Authentication plugin ‘caching_sha2_password’ is not supported

再次借助谷歌搜索了好一会,终于找到了相对的问题和解决办法。发现之所以会出现这个问题是因为:
MySQL从8.0版本开始使用的默认加密认证方式就是:
caching_sha2_password 而不是 mysql_native_password。

症结找到了,所以解决办法也有了:

首先去MySQL里面修改默认加密认证方式

ALTER USER '你的用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

然后还要 去代码最后面加入这句
“?auth_plugin=:mysql_native_password"
才可以,如下:

engine = sql.create_engine('mysql+mysqlconnector://user:password@localhost:port/database?auth_plugin=mysql_native_password')

这下重新运行看看:

又成功解决填上一个坑,撒花🎉

感谢下面资料的提示:
Authentication plugin ‘caching_sha2_password’ is not supported
GitHub
[Python]mysql.connector.errors.NotSupportedError: Authentication plugin ‘caching_sha2_password’ is not supported