SQLalchemy连接数据库时要用一串url形如“mysql+pymysql://user:passwd@host/database”
当passwd包含“@”的时候这串url就没法正常解析了。
在SO上看到的答案,使用python的url解析库
http://stackoverflow.com/questions/1423804/writing-a-connection-string-when-password-contains-special-characters
python2
from urllib import quote_plus as urlquote
from sqlalchemy.engine import create_engine
engine = create_engine('postgres://user:%s@host/database' % urlquote('badpass'))
python3
from urllib import parse
from sqlalchemy.engine import create_engine
engine = create_engine('postgres://user:%s@host/database' % parse.unquote_plus('badpass'))