使用psycopg2查询远程数据库

7

我需要从远程数据库获取一些数据。这里是连接代码:

import psycopg2

params = {
  'dbname': 'some_db',
  'username': 'user',
  'password': 'password',
  'host': '333.333.333.333',
  'port': 3333
}

conn = psycopg2.connect(**params)

然后我尝试执行查询:

cur = conn.cursor()
cur.execute("SELECT * FROM sometable")

然后我遇到了异常:
psycopg2.ProgrammingError: relation sometable does not exist

现在,如果我使用相同的参数从同一台计算机通过psql连接到数据库:
psql --dbname=some_db --username=user --password=password --host=333.333.333.333 --port=3333

尝试执行查询:

SELECT * FROM sometable;

我得到了没有任何错误的结果。不仅仅是一个表格,而是该数据库中所有的表格都是如此。 编辑 我在参数上犯了小错误。我并没有使用
'username': 'user',

但是:

'user': 'user',
1个回答

11

尝试使用不同的变量名进行连接,例如:

params = {
  'database': 'some_db',
  'user': 'user',
  'password': 'password',
  'host': '333.333.333.333',
  'port': 3333
}

请参见:

http://initd.org/psycopg/docs/module.html


1
你尝试使用 DSN 字符串了吗?正如你所断言的那样,如果你可以直接使用 psql 连接到数据库并成功,那么使用相同凭据的 psycopg2 连接应该也能够正常工作。 - Greg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接