LoginSignup
5
2

More than 1 year has passed since last update.

[python-oracledb入門](第1回) さようならcx_Oracle、こんにちはpython-oracledb!!

Posted at

この記事は、JPOUG Advent Calendar 2022 8 日目の記事です。7 日目は gowatana さんの「Nutanix と Oracle Database」でした。

cx_Oracle → python-oracle

Oracle社製のPython向けのOracle Databaseアクセスドライバであるcx_Oracleは、2022年5月の改定にてpython-oracledbに刷新されました。本記事執筆時点(2022/12/8)でもcx_Oracleもまだ残ってはいますが、今後の改定は為されませんので、新規アプリケーションはもちろんのこと、既存アプリケーションもタイミングを見てpython-oracledbに変更してください。

python-oracledbで何が変わった?

python-oracledbもcx_Oracleと同じくPEP249(Python Database API Specification v2.0)に準拠しています。python-oracledbは実際にインストール、インポートするパッケージが「oracledb」になる点を除けば、コーディング上はcx_Oracleと基本的には変わりません。ですので、インポート部分を修正すればcx_Oracleのアプリケーションはほぼ動きます。

では何が変わったかということ、python-oracledbはThin Driverになりました。つまり、python-oracledbはOracle JDBC Thin Driverのように、Oracle Clientが不要になりました。cx_Oracleの場合はPythonアプリケーションと一緒にThick/InstantのOracle Clientを必要としましたが、python-oracledbではこれらクライアントを必要としませんので、作成したアプリケーションのセットアップがより簡単になり、アプリケーションがより配布しやすくなりました。ただし、python-oracledbはOracle Clientと共に使用することも可能です。Thin Mode(Oracle Client不使用)とThick Mode(Oracle Client使用)の両対応となります。Oracle Clientが必要になる(Thick Modeが必要になる)のは以下のケースです。

  • Oracle Client 11gを使用する場合。12c以降のOracle ClientはThin ModeでもThick Modeでも利用が可能です
  • cx_Oracleアプリケーションのバージョンアップの際、Oracle Clientを使用したままの形で移行したい場合。ただし、import文以外にもThick Modeを使用するためのコードの変更の必要があるので、このケースはあまりないとは思われます
  • Oracle Clientが必要な機能(クライアント結果キャッシュなど)を利用する場合

今後の連載について

基本的にはcx_Oracle入門の焼き直しとなりますが、過去の連載で触れていない話題を加えて、より充実した内容にしたいと思います。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2