正在尝试从 Python 脚本建立到 Amazon Redshift 的连接

Attempting to establish a connection to Amazon Redshift from Python Script

我正在尝试连接到 Amazon redshift table。我使用 SQL 创建了 table,现在我正在编写一个 Python 脚本来将数据框附加到数据库。我无法连接到数据库,感觉我的语法或其他方面有问题。我的代码如下。

from sqlalchemy import create_engine
conn = create_engine('jdbc:redshift://username:password@localhost:port/db_name')

这是我遇到的错误。

sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string 

谢谢!

基本上有两种使用 Python 连接到 Amazon Redshift 的选项。

选项 1:JDBC 连接

这是与数据库的传统连接。流行的选择往往是使用 psycopg2 来建立连接,因为 Amazon Redshift 类似于 PostgreSQL 数据库。你可以 download specific JDBC drivers for Redshift.

此连接要求进行查询的计算机可以访问 Redshift 数据库,并且安全组需要允许访问端口 5439。如果您尝试从 Internet 上的计算机进行连接,数据库需要在 Public 子网中并设置为 Publicly Accessible = Yes.

参见:Establish a Python Redshift Connection: A Comprehensive Guide - Learn | Hevo

选项 2:Redshift 数据 API

您可以使用 Boto3 library for Python, including an execute_statement() call to query data and a get_statement_result() 调用直接查询 Amazon Redshift 数据库以检索结果。这也适用于 IAM 身份验证,而不必创建额外的 'database users'.

此方法无需配置安全组,因为请求是向 AWS(在 Internet 上)发出的。它还适用于 私有子网 .

中的 Redshift 数据库