この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
データアナリティクス事業本部のkobayashiです。
PythonでRedshiftのデータを扱う際に使用するモジュールとしてはAmazon Redshift Pythonコネクタが最初の選択肢になるかと思います。Amazon Redshift Python コネクタを使うとboto3やpandasとの連携が簡単に可能になりますが、このAmazon Redshift Python コネクタでRedshift Serverlessに接続してみたのでまとめます。
Amazon Redshift Python コネクタを使って接続してみる
Redshift ServerlessにAmazon Redshift Python コネクタを使って接続してみますが、接続方法に関しては今回はIAMなど使わずにシンプルにホスト名とユーザー名、パスワードで接続してみます。
環境
- Python 3.9.14
- redshift-connector 2.0.909
Redshift Serverlessに接続してみる
まずは redshift-connectorのインストールを行います。
インストールはpipで簡単にインストールできます。
$ pip install redshift-connector
次にRedshift Serverlessに接続するPythonコードを記述します。
import redshift_connector
# 接続情報
params = {
"host": "{ワークグループ名}.{アカウントID}.ap-northeast-1.redshift-serverless.amazonaws.com",
"database": "{DB名}",
"user": "{ユーザー名}",
"password": "{パスワード}",
}
with redshift_connector.connect(**params) as con:
# カーソルの作成
with con.cursor() as cur:
cur.execute("create Temp table book(bookname varchar,author varchar)")
cur.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"),
],
)
cur.execute("select * from book")
result = cur.fetchall()
print("クエリ結果:\n", result)
今回はシンプルにホスト名、ユーザー名、パスワードで接続を行いますのでredshift-connectorに渡す項目も上記のようになっています。
スクリプト中では公式ドキュメント で行われているのと同様に、一時テーブルbook
を作成し、そのテーブルへデータをInsertした後にSelectを行い結果をprintで表示しています。
実行してみるとRedshift Serverlessでも問題なくredshift-connectorを使って接続が行えることがわかります。
$ python rs-conn_serverless.py
クエリ結果:
(['One Hundred Years of Solitude', 'Gabriel García Márquez'], ['A Brief History of Time', 'Stephen Hawking'])
まとめ
Amazon Redshift Pythonコネクタのredshift-connectorでRedshift Serverlessへ接続してみました。特に問題なくServerlessでない通常のRedshiftと変わりなく接続は行えました。 今回はシンプルはホスト名とユーザー名・パスワードを使った接続だったのでIAM認証やIdPを使った認証も試してみたいと思います。
最後まで読んで頂いてありがとうございました。