やったこと
- Glue Python ShellからRDS for Oracleに接続しデータを抽出する
- Python ライブラリ
python-oracledb
を使用する
先にまとめ
- Glue のパラメータ設定に
--additional-python-modules
を追加することで接続できた
経緯
以前Cx_OracleでGlue Python ShellからRDS for Oracleに接続を試みましたが、Oracle Clientのインストールが必要で色々試行錯誤した結果「Glue Python ShellからRDS for Oracleに接続するのは無理」と判断しました
しかし今回使用するpython-oracledb
は、2022/11ごろにCx_Oracleから名前が変わってupgradeしたライブラリで、Oracle Clientのインストールが不要と記載されているので、接続できるか試すことになりました
python-oracledb – Python Driver for Oracle Database
実装内容
additional-python-modules
の設定
python scriptにimport oracledb
と記載しても、Glue にdefaultとして入っていないのでGlue詳細設定にあるJob parametersに--additional-python-modules:oracledb
を追加します
scriptにデータ抽出処理を実装
import oracledb
tns = oracledb.makedsn('test-rds-oracle.xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com', 1521, service_name = 'testdemo')
with oracledb.connect(user='youruser', password='yourpassword', dsn=tns) as connection:
with connection.cursor() as cursor:
sql = """select * from testschema.test_table_names where ROWNUM <= 2"""
for r in cursor.execute(sql):
print(r)
これでデータ抽出ができました
最後に
以前投稿したGlue Python ShellからRDS for Oracleを接続を試して断念 の記事でできなかったことが呆気なくできました
喜んで良いのか、虚しいのかよくわからない気持ちです
とにかくどなたかの参考になれば嬉しいです