A huge year of growth for python-oracledb – Christopher Jones

It’s been three years since our ground-breaking python-oracledb driver replaced the venerable cx_Oracle driver, and a year since I gave a status update. This post reviews the features and achievements of python-oracledb over the last year.

Technology news image
Major changes in python-oracle releases from March 2023 to April 2025.

Last year I wrote a post A Celebration of Python and Oracle Database which covered the history of the python-oracledb driver in its first two years since it replaced cx_Oracle. It’s time to bring you up to date.

WHAT’S NEW SINCE 2024

Python use over the last year has grown rapidly, and the additional features of python-oracledb continue to be attractive to Oracle Database developers, particularly in the AI and data analysis fields. In the few months so far since our 3.0 release, the number of daily python-oracledb downloads has doubled.

The major trends for python-oracledb over the year have been support for Oracle Database 23ai and Oracle Cloud features, and improvements to python-oracledb Thin mode (the default mode without Oracle Client libraries) for parity with Thick mode.

Highlights are listed below.

python-oracledb 2.3.0

Python-oracledb 2.3 was released in July 2024. Oracle Database 23.5 had just introduced a BINARY format for the VECTOR data type, so support was added to the driver. Two-Phase Commit and BFILE data type support landed in Thin mode (to match Thick mode). A new ssl_version parameter lets TCPS connections choose a TLS version. There was a new ping_timeout option for connection pooling to improve reliability. Smaller binaries shipped on Linux: they were small already but we changed to use the gcc -g0 compiler option to make them even tinier. An overall review of Oracle Database’s driver defaults occurred and this lead to the defaults for tcp_connection_timeout and retry_delay to change, giving consistent user experience and good default behavior across all languages.

See the release announcement and release notes.

python-oracledb 2.4.0

Support for Oracle Database 23ai Pipelining landed. I love this feature and blogged about it several times, e.g. Pipelined database operation performance redux with python-oracledb: very impressive. The release also had the start of connection management refactoring with a reworked connection string parser. We have to keep up with the Python community so we added binary packages for Python 3.13, and dropped Python 3.7.

See the release announcement and release notes.

python-oracledb 2.5.0

LDAP support in Thin mode was a highly requested feature: a register_protocol() function was added so you can easily use your favorite Python LDAP package. There were improvements to Pipelining with the addition of warnings, and access to column metadata for pipelined queries. A database size attribute max_identifier_length was introduced to make frameworks like SQLAlchemy more efficient (by avoiding the need for them to execute a full query to find the length). Attributes program, terminal, machine, osuser, driver_name can be set in Thin mode and queried in Oracle Database V$ tables. Thin mode users can now set appcontext and edition during connection (bringing Thin mode in line with Thick mode). Locale aware config_dir and lib_dir path handling changes aid some Windows users. Binary packages are now built using a GitHub action, making builds easier, and giving us a way to create development packages for you to test throughout a release cycle.

See the release announcement and

Truncated by Planet PHP, read more at the original (another 4491 bytes)