2017-02-27 107 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

没有发现。确实在文档中是错误的。 –