1

看起来很简单的问题:我的 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 接受该密码?我正常的下一步是尝试使用从属方法构建连接,但我在文档中看不到另一种建立连接的方法。我在这里根本不允许使用带有斜杠的密码吗?我可以接受这一点,但如果没有该功能,该工具包似乎不太可能做到这一点。

版本:Python 2.6.6、SQLAlchemy 0.8.0

4

1 回答 1

5

斜杠不是 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)
于 2013-03-31T10:20:14.270 回答