2013-03-31 10 views
0

相當簡單的問題:我的Python腳本正在嘗試創建SQLAlchemy數據庫連接。密碼包含一個正斜槓:SQLAlchemy ValueError for create_engine()的密碼斜槓

engineString = 'postgresql://wberg:pass/[email protected]/mydatabase' 
engine = sqlalchemy.create_engine(engineString) 

但第二行提出:

ValueError: invalid literal for int() with base 10: 'pass' 

使用原始字符串並不能幫助(與「R」前面加)。有沒有辦法讓SQLAlchemy接受這個密碼?我通常的下一步是嘗試構建與下級方法的連接,但我無法看到在文檔中建立連接的另一種方式。我只是不允許在這裏使用斜槓密碼?我可以適應這一點,但似乎不太可能的工具包可能沒有這個功能得到這麼遠。

版本:2.6.6的Python,SQLAlchemy的0.8.0

回答

2

斜槓是不是URL字符串組成有效的字符。您需要對連接字符串的密碼部分進行URL編碼:

from urllib import quote_plus as urlquote 
from sqlalchemy.engine import create_engine 
engineString = 'postgresql://wberg:%[email protected]/mydatabase' % urlquote('pass/word') 
engine = create_engine(engineString) 
+0

我缺少Python-fu。非常好,謝謝! –

+0

使用python3,你需要'urllib.parse import quote_plus作爲urlquote'而不是第一次導入。 –