[DB-SIG] cx_Oracle 4.1
anthony at computronix.com
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?
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 setup.py 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
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 hsbc.com 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
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 at computronix.com
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 DB-SIG