无法使用 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 的行数