2017-02-27 113 views
0

我一直在使用下面的代碼行最長的時間,沒有任何困難,但今天它似乎產生了以下錯誤,我不明白爲什麼。奇怪的是,我有一個使用相同的代碼,他們似乎都工作的其他腳本...Python:遇到問題連接到Postgresql DB

import pandas as pd 
import psycopg2 
link_conn_string = "host='<host>' dbname='<db>' user='<user>' password='<pass>'" 
conn = psycopg2.connect(link_conn_string) 
df = pd.read_sql("SELECT * FROM link._link_bank_report_lms_loan_application", link_conn_string) 

錯誤消息:

"Could not parse rfc1738 URL from string '%s'" % name) 
sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string 'host='<host>' dbname='<db>' user='<user>' password='<pass>'' 
+0

不確定你的意思?你能澄清一下嗎? –

+0

這是一個像「blahblahblah.com」 –

+0

這樣的URL地址這是因爲我改變了回溯錯誤,因爲我想保護憑據的隱私 –

回答

0

變化link_conn_string要像here

postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...] 

如:

>>> import psycopg2 
>>> cs = 'postgresql://[email protected]:5432/t' 
>>> c = psycopg2.connect(cs) 
>>> import pandas as pd 
>>> df = pd.read_sql("SELECT now()",c) 
>>> print df; 
           now 
0 2017-02-27 21:58:27.520372+00:00 
-1

您的連接字符串錯誤。

您應該刪除,你分配一個字符串「link_conn_string」變量和替換像這樣的下一行線(記得所在機器的名稱,以取代本地主機Postgres的祕密 PostgreSQL是運行時,用戶密碼使該連接所需的):

conn = psycopg2.connect(dbname="localhost", user="postgres", password="secret") 

此外,您可以檢查數據庫正在與「psql的」合作從終端輸入(再次記住更改用戶和數據庫):

psql -U postgresql database 
+0

我懷疑這是[文檔](http://initd.org/psycopg/docs/module.html)中的拼寫錯誤,因爲缺少關鍵字參數的「=」。他們也確實說,類似於OP的字符串是一個有效的選擇。 – jonrsharpe

+0

沒有發現。確實在文檔中是錯誤的。 –