本記事は次の記事の続編です。
(下記記事の手順を実行する際に遭遇したエラーについての備忘録)
PythonでSQLAlchemyを使ってOracleDBに接続する方法
(0) 目次
(4) エラー対応
(4-1) エラー1:Cannot locate a 64-bit Oracle Client library
(4-1-1) エラー原因
(4-1-2) インストール状況の確認
(4-1-3) 対処方法
(4-2) エラー2:
(4-2-1) エラー原因
(4-2-2) 対処方法
(4-3) XXX is not a supported wheel on this platform
(4) エラー対応
(4-1) エラー1:Cannot locate a 64-bit Oracle Client library
(図411)エラー画面
(4-1-1) エラー原因
Oracle Instant Clientライブラリがインストールされていない事が原因と推定されます。
sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found". See https://oracle.github.io/odpi/doc/installation.html#windows for help
PythonからOracleデータベースに接続するには”cx_Oracle”ドライバのみならず”Oracle Instant Client”ライブラリのインストールも必要です。
(図101)
(4-1-2) インストール状況の確認
インストールされている場合は「instantclient_XX_X」(“X”はバージョン番号)のディレクトリがどこかにあるはずなので、確認コマンド等でチェックできます。次のコマンドの例はCドライブの直下を再帰的に検索して「installclient」という文言を含むファイルやディレクトリを検索しています。
dir instantclient* /S
(図411)
(4-1-3) 対処方法
もし上記の手順で「instantclient_XX_X」のフォルダが存在しない場合、下記リンクで説明している手順にて「Oracle Instant Client」のインストールを実施します。
■Oracle Instant Clientの導入方法について
(4-2) エラー2:ORA-12541: TNS:no listener
(4-2-1) エラー原因
このエラーは接続先のデータベースサーバにて、リスナーが見当たらない場合に出力されるもので、接続要求を受けるDBサーバー側でリスナーが起動していない等のケースが想定されます。
・エラー前半部分
cx_Oracle.DatabaseError: ORA-12541: TNS:no listener The above exception was the direct cause of the following exception:
・エラー後半部分
sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) ORA-12541: TNS:no listener (Background on this error at: http://sqlalche.me/e/4xp6)
(図429)
(4-2-2) 対処方法
リスナーが起動していないケースの場合、下記にて説明している手順でリスナーの状態チェックや起動を行います。
①リスナーの状態確認~起動
②データベースの状態確認~起動
■SQL Developer接続エラーへの対処(ORA-12514, ORA-12505)
(4-3) XXX is not a supported wheel on this platform
このエラーが出た場合、インストールしようとしたパッケージの対応OSが実際のOSと異なっている可能性があります。次の例はWindows 64bitのOSを持つサーバにLinux用の”Oracle Instant Client”をインストールしようとした際のエラーです。
(図431)
正しくWindows 64bit用の資源でインストールしたら正常に終了しました。
XXX_win32.whl →Win32bit用
XXX_manylinux1_x86_64.whl →Linux系OS用
XXX_win_amd64.whl →Win64bit用
インストールの手順については下記にて記載しています。
■cx_Oracleのインストール方法