无法使用 psycopg2 从 Amazon Redshift 读取数据

Posted

技术标签:

【中文标题】无法使用 psycopg2 从 Amazon Redshift 读取数据【英文标题】:Unable to read data from Amazon Redshift using psycopg2 【发布时间】:2014-04-27 12:18:22 【问题描述】:

您好,我正在尝试使用 Python 代码从 Amazon Redshift 表中读取一些数据。

我正在使用 psycopg2 库。

以下是我正在使用的代码:

import psycopg2
try:
    conn = psycopg2.connect("dbname='testdb' port='5439' user='user' host='us-west.redshift.amazonaws.com' password='pass'");
except:
    print "I am unable to connect to the database"
cur = conn.cursor()
conn.set_isolation_level( psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT )
try:
    cursor.execute( 'begin' )
    cur.execute("""SELECT * from employee""")
    cursor.execute( 'commit' )
except:
    print "Unable to select from test database!"
rows = cur.fetchall()

但我无法读取数据,因为它无法从测试数据库中选择。

请指教。

【问题讨论】:

所以看起来您是从公共模式中的员工表中选择的。您能否确认“用户”用户 ID 可以使用 aginity 之类的查询工具从该表中进行选择? 另外,不要使用BEGIN,psycopg2 会为您管理。见initd.org/psycopg/docs/usage.html#transactions-control 是的,你是对的!所以我尝试仔细考虑它,发现连接字符串存在一些访问问题,并且代码也可以在没有开始和隔离级别的情况下工作。谢谢麦克和雾。 【参考方案1】:

我相信你需要输入redshift实例的全名,比'us-west.redshift.amazonaws.com'长:

conn = psycopg2.connect("dbname='testdb' port='5439' user='user' host='REDSHIFT_INSTANCE_NAME.redshift.amazonaws.com' password='pass'") ;

例如,主机类似于 'tst.cryibvg33r9d.ap-southeast-1.redshift.amazonaws.com'

【讨论】:

以上是关于无法使用 psycopg2 从 Amazon Redshift 读取数据的主要内容,如果未能解决你的问题,请参考以下文章

psycopg2/python 将数据从 postgresql 复制到 Amazon RedShift(postgresql)

使用 Amazon Redshift 从 Python psycopg2 中的游标获取大于 MAX INT 的行数

尝试使用 Postgres 连接到数据库,但无法将 Amazon 服务器上的地址转换为 Amazon 数据库

无法使用 psycopg2 从亚马逊红移读取列类型

psycopg2 模块无法识别

如何从我的 Amazon EC2 实例中连接到 Amazon Redshift 集群