【问题标题】:SQLAlchemy ValueError for slash in password for create_engine() [duplicate]SQLAlchemy ValueError for create_engine() 的密码中的斜线 [重复]
【发布时间】:2013-03-21 15:11:27
【问题描述】:

看起来很简单的问题:我的 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

【问题讨论】:

    标签: python escaping sqlalchemy


    【解决方案1】:

    斜杠不是 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)
    

    【讨论】:

    • 我缺乏 Python-fu 的表现。效果很好,谢谢!
    • 使用python3你需要做from urllib.parse import quote_plus as urlquote而不是第一次导入。
    猜你喜欢
    • 2019-10-30
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2012-12-25
    • 2021-03-11
    • 1970-01-01
    • 2016-08-28
    相关资源
    最近更新 更多