本文共 624 字,大约阅读时间需要 2 分钟。
在Python语句中,使用create_engine连接数据库,相关代码如下:
dbConnect=create_engine('mysql+pymysql://'+userName+":"+password+"@"+dbHost+":"+dbPort+"/"+dbName+"?charset=utf8")
结果因为password中有特殊字符导致报错,无法正常连接数据库。报错信息如下
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'xxxx@localhost' ([Errno 11003] getaddrinfo failed)")
实际上上面提示信息里面的xxxx@localhost,前面的xxxx代表的是password中位于@符号之后的部分,所以导致连接数据库报错。实际上需要对password进行一定的处理,相关代码如下:
from urllib.parse import quote_plus as urlquotedbConnect=create_engine(f'mysql+pymysql://{userName}:{urlquote(password)}@{dbHost}:{dbPort}/{dbName}?charset=utf8')
至此问题解决。
转载地址:http://ljyef.baihongyu.com/