Glue Python Shellでpython-oracledbを使ってOracleへ接続

やったこと

  • 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を接続を試して断念 の記事でできなかったことが呆気なくできました

喜んで良いのか、虚しいのかよくわからない気持ちです

とにかくどなたかの参考になれば嬉しいです