【原因】
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 鏈接數據庫,指定編碼,解決密碼含有特殊字符