在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 urlquote
dbConnect=create_engine(f'mysql+pymysql://{userName}:{urlquote(password)}@{dbHost}:{dbPort}/{dbName}?charset=utf8')

至此问题解决。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐