【sqlalchemy】使用正确的DB_URI却报错密码错误-密码中包含特殊符号导致

【原因】

db_password密码中含有特定字符,比如含有@ %,则把密码部分进行URL编码

【解决办法】

from urllib.parse import quote_plus as urlquote

db_passw='f%%!kdku9fTn3r'
#在连接前将包含特殊符号的密码转码再链接
url='mysql+mysqlconnector://<username>:%s@<ip>:<port>/<db_name>?charset=utf8'%urlquote(db_passw)
engine = create_engine(url)

很奇怪的是,我之前一直用的这个密码,并没有报错。

现在却突然这样,真是奇怪,难道是开发环境所使用的依赖包有升级导致的吗?(所以有经验既是一件好事-做过的事做的更快了,有时候也会耽误事-盲目相信之前的判断-不能以全新的视角看待发现的问题。因为之前一直都能连接通,所以我一直没有考虑可能是真的密码出了问题,也不知道该往什么方向去排查问题,真是很是头疼了一会儿。)

总之,这个问题解决了还是很开心的

超感谢下面2位作者为了提供了解决问题的思路

参考文章:

关于使用sqlalchemy链接数据库时密码中有@等特殊字符时报密码错误的解决方法

sqlalchemy 链接数据库,指定编码,解决密码含有特殊字符

原文地址:https://www.cnblogs.com/kaerxifa/p/11791133.html