如何在 Python 中使用 JDBC 驱动程序和 Boto3 API 连接到现有的 Redshift 数据库

Posted

技术标签:

【中文标题】如何在 Python 中使用 JDBC 驱动程序和 Boto3 API 连接到现有的 Redshift 数据库【英文标题】:how to make a connection to an existing Redshift database using JDBC driver and Boto3 API in Python 【发布时间】:2019-08-31 21:52:55 【问题描述】:

我不知道如何使用 Boto3 API 在 Python 中编写连接字符串,以建立与 AWS Redshift 上现有数据库的 jdbc 连接。我正在使用 MobaXterm 或 putty 进行 SSH 连接。我有一些代码来创建表,但不知道如何连接到 Redshift 中的数据库

import boto3

s3client = boto3.client('redshift', config=client-config)

CREATE TABLE pheaapoc_schema.green_201601_csv (
    vendorid varchar(4),
    pickup_ddatetime TIMESTAMP,
    dropoff_datetime TIMESTAMP,

我需要连接到数据库“dummy”并创建一个表。

【问题讨论】:

你连接的是psycopg2,而不是boto3。 boto3 用于与 AWS API 交互。 所以无法连接JDBC JDBC 适用于 Java,而不适用于 Python。 好的,所以我使用 psycopg2,我仍然没有得到连接字符串的格式。我有一个端点和一个 IAM 凭证,所以 conn =psycopg2.db=endpoint + dbname+credential??请给我看一个例子怎么样,假设我的数据库在 us-east1 上是虚拟的,那大致看起来如何? 您不需要/使用 iam 凭据,您需要 redshift 凭据。不同的事。格式与 postgres 几乎相同,因此您可以查看它。并阅读此docs.aws.amazon.com/redshift/latest/mgmt/… 【参考方案1】:

TL;DR;您不需要 IAM 凭证或 boto3 即可连接到 Redshift。您需要的是 Redshift 集群的 end_point 和 redshift 凭证以及一个您可以使用的 postgres 客户端。

您可以像连接到任何数据库(如 MySQL、PostgreSQL 或 MongoDB)一样连接到 Redshift 集群。要连接到任何数据库,您需要 5 个项目。

    主机 - (这不过是您从 AWS 控制台/Redshift 获得的终点) 用户名 -(再次参考 AWS 控制台/Redshift。查看主用户名部分) 密码 - (如果您创建了 Redshift,您应该知道主用户的密码) 端口号 -(Redshift 为 5439) 数据库 - (您最初创建的默认数据库)

如果不直观,请参考屏幕截图。

boto3 API 有什么作用?

Boto3 提供 API,您可以使用这些 API 修改您的 Redshift 集群。例如,它提供 API 来删除集群、调整集群大小或拍摄集群快照。它们不涉及任何连接。

截图供参考:

【讨论】:

以上是关于如何在 Python 中使用 JDBC 驱动程序和 Boto3 API 连接到现有的 Redshift 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 kafka 连接 JDBC sink 和 source 使用 python

从 Python 连接和测试 JDBC 驱动程序

如何在 Jython 中安装 ODBC 库

在 Python 中读取 SQL 文件以通过 databricks 对 JDBC 运行

如何在 Azure 数据砖中使用 ucanaccess(ms 访问 jdbc 驱动程序)?

如何在 oracle 11 中使用 JDBC 4 驱动程序?