我的公司最近更改了我们的Redshift群集,现在他们需要SSL连接。在过去,我通过我在此详述的方法将Python / pandas连接到Redshift:http://measureallthethin.gs/blog/connect-python-and-pandas-to-redshift/
在SQLAlchemy文档中,看起来我需要做的就是将connect_args={'sslmode':'require'}
添加到create_engine()
调用,正如此线程所指出的那样:How do I connect to Postgresql using SSL from SqlAchemy+pg8000?
但是,我现在收到此错误:
OperationalError:(psycopg2.OperationalError)sslmode value" require"在
中未编译SSL支持时无效
我将Anaconda发行版用于许多软件包,并发现我需要按照以下说明更新我的psycopg2软件包:https://groups.google.com/a/continuum.io/d/msg/conda/Fqv93VKQXAc/mHqfNK8xZWsJ
然而,即使在更新psycopg2之后,我仍然得到相同的错误,并且此时如何进一步调试仍然处于亏损状态。我想弄清楚这一点,以便将Redshift数据直接输入熊猫。
答案 0 :(得分:0)
AWS 开发了一个适用于 Python (here is the GitHub repo) 的 Amazon Redshift 连接器,可在此过程中提供帮助。
为了安装它可以从源代码安装
git clone https://github.com/aws/amazon-redshift-python-driver.git
cd redshift_connector
pip install .
或者从二进制使用 PyPi
pip install redshift_connector
conda install -c conda-forge redshift_connector
这是一个例子
import redshift_connector
# Connects to Redshift cluster using AWS credentials
conn = redshift_connector.connect(
host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
database='dev',
user='awsuser',
password='my_password'
)
cursor: redshift_connector.Cursor = conn.cursor()
cursor.execute("create Temp table book(bookname varchar,author varchar)")
cursor.executemany("insert into book (bookname, author) values (%s, %s)",
[
('One Hundred Years of Solitude', 'Gabriel García Márquez'),
('A Brief History of Time', 'Stephen Hawking')
]
)
cursor.execute("select * from book")
result: tuple = cursor.fetchall()
print(result)
>> (['One Hundred Years of Solitude', 'Gabriel García Márquez'], ['A Brief History of Time', 'Stephen Hawking'])
请注意,可以通过的 Connection Parameters 之一是 SSL(如果启用了 SSL)。默认值为 TRUE
。