【问题标题】:psycopg2 queries to remote databasepsycopg2 查询远程数据库
【发布时间】:2014-07-17 23:07:46
【问题描述】:

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

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',

【问题讨论】:

    标签: postgresql python-2.7 psycopg2


    【解决方案1】:

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

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

    见:

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

    【讨论】:

    • 您是否尝试过使用 dsn 字符串?正如您断言的那样,如果您可以使用 psql 直接连接到数据库并且成功,那么使用相同凭据与 psycopg2 的连接应该可以正常工作。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多