相当简单的问题:我的Python脚本正在尝试创建SQLAlchemy数据库连接。密码包含正斜杠:
engineString = 'postgresql://wberg:pass/word@localhost/mydatabase'
engine = sqlalchemy.create_engine(engineString)
但第二行提出:
ValueError: invalid literal for int() with base 10: 'pass'
使用原始字符串(前缀为'r')无济于事。有没有办法让SQLAlchemy接受该密码?我通常的下一步是尝试使用从属方法构建连接,但我看不到在doc中建立连接的另一种方法。我不允许在这里使用带斜线的密码吗?我可以适应这一点,但似乎不太可能在没有该功能的情况下工具包可以实现这一点。
版本:Python 2.6.6,SQLAlchemy 0.8.0
答案 0 :(得分:2)
斜杠不是URL组件字符串的有效字符。您需要对连接字符串的密码部分进行URL编码:
from urllib import quote_plus as urlquote
from sqlalchemy.engine import create_engine
engineString = 'postgresql://wberg:%s@localhost/mydatabase' % urlquote('pass/word')
engine = create_engine(engineString)