cx_Oracle 4.1

Anthony Tuininga anthony at
Mon Jan 24 20:04:30 CET 2005

What is cx_Oracle?

cx_Oracle is a Python extension module that allows access to Oracle and
conforms to the Python database API 2.0 specifications with a few

Where do I get it?

What's new?

  1) Added support for Python 2.4. In Python 2.4, the datetime module is
     used for both binding and fetching of date and timestamp data. In
     Python 2.3, objects from the datetime module can be bound but the
     internal datetime objects will be returned from queries.
  2) Added pickling support for LOB and datetime data.
  3) Fully qualified the table name that was missing in an alter table
     statement in the setup test script as noted by Marc Gehling.
  4) Added a section allowing for the setting of the RPATH linker
     directive in as requested by Iustin Pop.
  5) Added code to raise a programming error exception when an attempt is
     made to access a LOB locator variable in a subsequent fetch.
  6) The username, password and dsn (tnsentry) are stored on the
     connection object when specified, regardless of whether or not a
     standard connection takes place.
  7) Added additional module level constant called "LOB" as requested by
     Joseph Canedo.
  8) Changed exception type to IntegrityError for constraint violations
     as requested by Joseph Canedo.
  9) If scale and precision are not specified, an attempt is made to
     return a long integer as requested by Joseph Canedo.
10) Added workaround for Oracle bug which returns an invalid handle when
     the prepare call fails. Thanks to alantam at for providing the
     code that demonstrated the problem.
11) The cusor method arravar() will now accept the actual list so that
     it is not necessary to call cursor.arrayvar() followed immediately
     by var.setvalue().
12) Fixed bug where attempts to execute the statement "None" with bind
     variables would cause a segmentation fault.
13) Added support for binding by position (paramstyle = "numeric").
14) Removed memory leak created by calls to OCIParamGet() which were not
     mirrored by calls to OCIDescriptorFree(). Thanks to Mihai Ibanescu
     for pointing this out and providing a patch.
15) Added support for calling cursor.executemany() with statement None
     implying that the previously prepared statement ought to be
     executed. Thanks to Mihai Ibanescu for providing a patch.
16) Added support for rebinding variables when a subsequent call to
     cursor.executemany() uses a different number of rows. Thanks to
     Mihai Ibanescu for supplying a patch.
17) The microseconds are now displayed in datetime variables when
     nonzero similar to method used in the datetime module.
18) Added support for binary_float and binary_double columns in Oracle

Changes since 4.1 beta 1

  1) Fixed bug where subclasses of Cursor do not pass the connection in
     the constructor causing a segfault.
  2) DDL statements must be reparsed before execution as noted by Mihai
  3) Add support for setting input sizes by position.
  4) Fixed problem with catching an exception during execute and then
     still attempting to perform a fetch afterwards as noted by Leith
  5) Rename the types so that they can be pickled and unpickled. Thanks
     to Harri Pasanen for pointing out the problem.
  6) Handle invalid NLS_LANG setting properly (Oracle seems to like to
     provide a handle back even though it is invalid) and determine the
     number of bytes per character in order to allow for proper support
     in the future of multibyte and variable width character sets.
  7) Remove date checking from the native case since Python already
     checks that dates are valid; enhance error message when invalid
     dates are encountered so that additional processing can be done.
  8) Fix bug executing SQL using numeric parameter names with predefined
     variables (such as what takes place when calling stored procedures
     with out parameters).
  9) Add support for reading CLOB values using multibyte or variable
     length character sets.

Anthony Tuininga
anthony at

Distinctive Software. Real People.
Suite 200, 10216 - 124 Street NW
Edmonton, AB, Canada  T5N 4A3
Phone:	(780) 454-3700
Fax:	(780) 454-3838

More information about the Python-announce-list mailing list