原文はこちら。
https://blogs.oracle.com/opal/entry/python_cx_oracle_5_3
本日、Oracle Database用の非常に人気のあるPythonインタフェースであるcx_Oracle 5.3のリリースを発表できうれしく思います。バイナリとソースはPyPiを使って通常通りインストールできます。
今回のリリースでは、ソースコードリポジトリとホームページをGitHubに移行しました。 ユーザー文書はreadthedocsに残しています。cx_Oracleメーリングリストも引き続き同じ環境ですが、質問や問題についてはGitHubに移行しています。
全体的に、cx_OracleはOracle Databaseのための最も包括的で人気のあるスクリプト言語ドライバで、cx_OracleはOracleクライアント・ライブラリやOracle Databaseに組み込まれた優れた機能を活用しますし、もちろん、cx_Oracleを使うPythonアプリケーションは、ネットワーク・データの暗号化などのOracle Net機能を利用することができます。
cx_Oracle 5.3は、Oracle Databaseの優れた機能をサポートする大きなリリースです。 是非チェックしてください。
https://blogs.oracle.com/opal/entry/python_cx_oracle_5_3
本日、Oracle Database用の非常に人気のあるPythonインタフェースであるcx_Oracle 5.3のリリースを発表できうれしく思います。バイナリとソースはPyPiを使って通常通りインストールできます。
Python interface to Oracle (Python Package Index)cx_Oracle 5.3は、Python v2.7、およびv3.4以上で動作します。cx_OracleはOracle 11gR2、12cR1、および12cR2クライアント・ライブラリとともに使用することができ、複数のOracle Databaseバージョンに接続できます。Oracle Databaseの標準的なクライアント・サーバー・バージョンの互換性により、古いデータベースと新しいデータベースの両方に接続できます。たとえば、Oracle Database 11gR2クライアント・ライブラリを使うとOracle Database 10gR2以降に接続できます。
https://pypi.python.org/pypi/cx_Oracle/
Installation
https://github.com/oracle/python-cx_Oracle#installation
今回のリリースでは、ソースコードリポジトリとホームページをGitHubに移行しました。 ユーザー文書はreadthedocsに残しています。cx_Oracleメーリングリストも引き続き同じ環境ですが、質問や問題についてはGitHubに移行しています。
ソースコード(Python interface to Oracle Database)
https://github.com/oracle/python-cx_Oracle
ホームページ
https://oracle.github.io/python-cx_Oracle/index.html
Documentation
http://cx-oracle.readthedocs.io/en/latest/index.html
cx-oracle-users メーリングリスト
https://lists.sourceforge.net/lists/listinfo/cx-oracle-users
GitHub Issues
https://github.com/oracle/python-cx_Oracle/issues
The New cx_Oracle 5.3
Anthony TuiningaがOracleに加わって以来、cx_Oracleの改善を加える作業に取り組んできました。(彼は次の大きなリリースのための基礎となる作業もしていますが、これについてはこの記事の後半で説明します)。みなさんがcx_Oracle 5.3に感銘を受けるであろうと考えています。昨年のOracle OpenWorldでは、Anthonyがいくつかの変更について話し、よいフィードバックをたくさんいただきました。昨年のOpenWorldでのプレゼンテーションは以下のURLでチェックしてください。Python and Oracle Database: Tips, Tricks, and the Best New Features [CON6543]これは大きなアップデートです。一部はOracle Database 12cの機能に固有の変更ではありますが(リリース・ノートを参照してください)、たとえ古いデータベースを利用されている場合でも、このアップデートでアプリケーションの性能がよくなることがわかるでしょう。そして、Oracle Database 12cR2にアップグレード中、もしくはその予定がありますか?Oracle Database Cloudを使用してOracle Database 12cR2にすぐにアクセスできることをお忘れなく。
https://oracle.rainfocus.com/scripts/catalog/oow16.jsp?search=CON6543&showEnrolled=false&search.event=oracleopenworld
Release Note
http://cx-oracle.readthedocs.io/en/5.3/releasenotes.html#version-5-3-march-2017
Oracle Database Software Downloads
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
Oracle Database Cloud Service
https://cloud.oracle.com/ja_JP/database
Key New Features
- Python 3.6のサポート
v2.6以前のPythonはサポート対象外です(Python 2.6のサポートが必要であれば、cx_Oracle 5.2をPyPiから入手してください)cx_Oracle 5.2.1
https://pypi.python.org/pypi/cx_Oracle/5.2.1 - Oracle Client 12.2のサポート
Oracle Database 11gR2より前のOracle Clientはサポート対象外です。 - SQLオブジェクトへのダイレクト・バインディング
大きなユースケースとして、Oracle Spatial SDOオブジェクトにPythonオブジェクトをバインドする例があります。詳細はInsertGeometry.pyをご覧ください。InsertGeometry.py
https://github.com/oracle/python-cx_Oracle/blob/v5.x/samples/InsertGeometry.py - PL/SQLレコードとコレクションをバインド可能
PL / SQLのストアド・ロジックと対話することは今までにない簡単な方法です。 - スクロール可能なカーソルのサポート
クエリ結果を行き来できるようになりました。詳細はScrollableCursors.pyをご覧ください。ScrollableCursors.py
https://github.com/oracle/python-cx_Oracle/blob/v5.x/samples/ScrollableCursors.py - Advanced Queuing(AQ)のサポート
データベース通知を使ってマイクロサービス・アプリケーションを構築できます。詳細はAdvancedQueuing.pyをご覧ください。AdvancedQueuing.py
https://github.com/oracle/python-cx_Oracle/blob/v5.x/samples/AdvancedQueuing.py - PL/SQLの暗黙の結果の取得
簡単にPL/SQLからのクエリ結果を戻すことができます。詳細はImplicitResults.pyをご覧ください。ImplicitResults.py
https://github.com/oracle/python-cx_Oracle/blob/v5.x/samples/ImplicitResults.py - Transaction Guardのサポート
計画外のサーバ停止後、トランザクションの状態を検証できます。詳細は、TransactioGuard.pyをご覧ください。TransactionGuard.py
https://github.com/oracle/python-cx_Oracle/blob/v5.x/samples/TransactionGuard.py - エディションベースの再定義をサポート
簡単にアプリケーションを切り替えてアップデートしたPL/SQLのロジックを使うことができます。詳細はEditioning.pyをご覧ください。Editioning.py
https://github.com/oracle/python-cx_Oracle/blob/v5.x/samples/Editioning.py - ステートメント・キャッシュのサポート
よく実行されるステートメントのコストを削減できます。全ての接続で利用できるようになりました。 - 接続作成時のアプリケーション・コンテキスト設定のサポート
アプリケーション・メタデータは、LOGONトリガー内を含め、データベースにより一層アクセスできるようになりました。詳細はAppContext.pyをご覧ください。AppContext.py
https://github.com/oracle/python-cx_Oracle/blob/v5.x/samples/AppContext.py
Other New Features
- Continuous Query Notificationの利用が簡単に
詳細は以下の2例をご覧ください。DatabaseChangeNotification.py
https://github.com/oracle/python-cx_Oracle/blob/v5.x/samples/DatabaseChangeNotification.py
QueryChangeNotification.py
https://github.com/oracle/python-cx_Oracle/blob/v5.x/samples/QueryChangeNotification.py - エラーオブジェクトのpickling/unpicklingのサポート
- ネイティブ整数のバインディングのサポート
- 分散トランザクションで使用する内部名と外部名の設定をサポート
- セッションプール内の接続の最大有効期間の設定
- より大きな行数(2 ^ 32より大きい)のサポート
- 既定のクエリ配列サイズを100に増加
Changes from cx_Oracle 5.2
以前のリリースで廃止対象のものとした発表に沿い、以下のアイテムがcx_Oracle 5.3で利用できなくなりました。maxlength
という変数属性は使えなくなりました。その代わりにbufferSize
を使ってください。- allocelems という変数属性は使えなくなりました。その代わりに
numElements
を使ってください。 UNICODE
、FIXED_UNICODE
、LONG_UNICODE
型は使えなくなりました。その代わりにNCHAR
、FIXED_NCHAR
、LONG_NCHAR
を使ってください。- OCI 関数のコールバックはサポートされなくなりました。
Future Deprecation Announcements
将来リリース予定のcx_Oracle 6では、以下のアイテムが廃止される予定です。cx_Oracle.connect()
のtwophase
、module
、action
、そしてclientinfo
の引数が廃止され、cx_Oracle 6では使えなくなる予定です。その代わりに新しいアプリケーション・コンテキスト(application context)を利用してください。- カーソル属性
numbersAsStrings
が廃止され、cx_Oracle 6では使えなくなる予定です。その代わりにOUTPUT型ハンドラ(output type handler)を利用してください。
Things you could already do in cx_Oracle 5.2
上記のcx_Oracle 5.3のすべての新機能は、これまでに積み上げたデータベースサポートの上に成り立っています。以前のリリースで既に使用可能な高度な機能は次のとおりです。- SQLおよびPL/SQLの実行
- 豊富なデータ型のサポート
- 大規模な結果セットの取得
- REF CURSOR
- PL/SQL配列のバインド
- ラージオブジェクト(CLOB、BLOB)
- トランザクション管理
- セッション・プーリング
- データベース常駐接続プーリング(DRCP)
- 特権接続とデータベースの起動・停止
- 外部認証
- Continuous Query Notification
- 行プリフェッチ
- クライアントの結果キャッシュ
- End-to-Endのトレース
- Oracle Database 高可用性機能
A future cx_Oracle 6
先ほど、みなさんがcx_Oracle 5.3に感銘を受けるだろうと書きましたが、Anthonyはより良いものを目指し、すでにcx_Oracle 6を見据えています。昨年Anthonyは、cx_Oracleが使用されるような、一般的なOracle Call Interface (OCI)機能の利用を簡素化し標準化するオープンソースのCライブラリである、ODPI-Cに熱心にとりくんできました。ODPI-Cは最近Githubで公開されました。cx_Oracleのソースコードからわかるように、cx_OracleコードのマスターブランチはODPI-Cを使用するようにアップデートされています。この将来のリリースの現状をテストしたい場合は、GitHubからバンドルをダウンロードしてビルドしてください。ユーザーに見える範囲での変更に関する(これまでの)リリースノートは以下のURLにあります。Oracle Database Programming Interface for Drivers and Applications (ODPI)
https://github.com/oracle/odpi
Release notes (6.x releases)
https://github.com/oracle/python-cx_Oracle/blob/master/doc/src/releasenotes.rst
Summary
cx_OracleをOracleの傘下に移すことで、Anthonyはcx_Oracleに注力する時間が増え、結果としてすべての開発者にとってデータベースへのアクセスが向上しました。全体的に、cx_OracleはOracle Databaseのための最も包括的で人気のあるスクリプト言語ドライバで、cx_OracleはOracleクライアント・ライブラリやOracle Databaseに組み込まれた優れた機能を活用しますし、もちろん、cx_Oracleを使うPythonアプリケーションは、ネットワーク・データの暗号化などのOracle Net機能を利用することができます。
cx_Oracle 5.3は、Oracle Databaseの優れた機能をサポートする大きなリリースです。 是非チェックしてください。
cx_Oracle Resources
cx_Oracle
https://oracle.github.io/python-cx_Oracle/index.html
Documentation
http://cx-oracle.readthedocs.io/en/latest/index.html
cx-oracle-users メーリングリスト
https://lists.sourceforge.net/lists/listinfo/cx-oracle-users
GitHub Issues
https://github.com/oracle/python-cx_Oracle/issues
Python interface to Oracle Database
https://github.com/oracle/python-cx_Oracle