Postgresql psycopg2对远程数据库的查询
我需要从远程数据库获取一些数据。此处显示要连接的代码:Postgresql psycopg2对远程数据库的查询,postgresql,python-2.7,psycopg2,Postgresql,Python 2.7,Psycopg2,我需要从远程数据库获取一些数据。此处显示要连接的代码: 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.execut
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")
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
并尝试执行查询:
cur = conn.cursor()
cur.execute("SELECT * FROM sometable")
SELECT * FROM sometable;
我得到的结果没有任何错误。这不仅发生在一个表中,而且发生在数据库中的所有表中
编辑
我对params没有什么错误。我用的不是
'username': 'user',
但是:
尝试使用不同的变量名进行连接,如:
params = {
'database': 'some_db',
'user': 'user',
'password': 'password',
'host': '333.333.333.333',
'port': 3333
}
见:
您尝试过使用dsn字符串吗?正如您所断言的,如果您可以使用psql直接连接到数据库,并且您成功了,那么使用相同凭据的psycopg2连接的工作原理应该是相同的。