需要 SSL 时将 Python/pandas 连接到 Redshift
Posted
技术标签:
【中文标题】需要 SSL 时将 Python/pandas 连接到 Redshift【英文标题】:Connecting Python/pandas to Redshift when SSL is required 【发布时间】:2015-09-10 21:47:41 【问题描述】:我的公司最近更改了我们的 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 值“require”在未编译 SSL 支持时无效
我将 Anaconda 发行版用于许多软件包,发现我需要按照以下说明更新我的 psycopg2 软件包:https://groups.google.com/a/continuum.io/d/msg/conda/Fqv93VKQXAc/mHqfNK8xZWsJ
但是,即使在更新 psycopg2 之后,我仍然会遇到同样的错误,并且在这一点上不知道如何进一步调试。我想弄清楚这一点,这样我就可以将我们的 Redshift 数据直接导入 pandas。
【问题讨论】:
尝试使用“verify-full”或“verify-ca”。当我之前尝试使用任何其他 sslmode 进行连接时,我收到消息:“[Amazon](500155) 属性 sslmode 的值无效。有效值为:verify-full, verify-ca。” 【参考方案1】:AWS 为 Python 开发了一个 Amazon Redshift 连接器 (here is the GitHub repo),可在此过程中提供帮助。
为了安装它可以从源代码安装
git clone https://github.com/aws/amazon-redshift-python-driver.git
cd redshift_connector
pip install .
或者从二进制使用PyPi
pip install redshift_connector
或Conda
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
。
【讨论】:
对于任何考虑使用 aws lambda 的人... :thumbs-down:redshift_connector
不适用于我的 lambda 用途。我捆绑了它,但 lambda 想要scramp
,然后是asn1crypto
,然后我停了下来。知道如何为 aws lambda 执行此操作吗?
this 对你有帮助吗?报废问题是否类似于this?以上是关于需要 SSL 时将 Python/pandas 连接到 Redshift的主要内容,如果未能解决你的问题,请参考以下文章