cx_Oracle 2.5

Anthony Tuininga anthony@computronix.com
16 Jul 2002 16:04:43 -0600


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
exceptions.


Where do I get it?

http://computronix.com/utilities


What's new?

The primary focus of this release was increased performance in certain
key areas, elimination of unimplemented parts of the DB-API 2.0 and
increased usefulness in a threaded environment. The following list
details the changes made in no particular order.

 1) Added flag OPT_NoOracle7 which, if set, assumes that connections
    are being made to Oracle8 or higher databases; this allows for
    eliminating the overhead in performing this check at connect time
 2) Added flag OPT_NumbersAsStrings which, if set, returns all numbers
    as strings rather than integers or floats; this flag is used when
    defined variables are created (during select statements only)
 3) Added flag OPT_Threading which, if set, uses OCI threading mode;
    there is a significant performance degradation in this mode (about
    15-20%) but it does allow threads to share connections (threadsafety
    level 2 according to the Python Database API 2.0); note that in
    order to support this, Oracle 8i or higher is now required
 4) Added Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS pairs where
    applicable to support threading during blocking OCI calls
 5) Added global method attach() to cx_Oracle to support attaching to an
    existing database handle (as provided by PowerBuilder, for example)
 6) Eliminated the cursor method fetchbinds() which was used for
    returning the list of bind variables after execution to get the
    values of out variables; the cursor method setinputsizes() was
    modified to return the list of bind variables and the cursor method
    execute() was modified to return the list of defined variables in
    the case of a select statement being executed; these variables have
    three methods available to them: getvalue([<pos>]) to get the value
    of a variable, setvalue(<pos>, <value>) to set its value and
    copy(<var>, <src_pos>, <targ_pos>) to copy the value from a variable
    in a more efficient manner than setvalue(getvalue())
 7) Implemented cursor method executemany() which expects a list of
    dictionaries for the arguments
 8) Implemented cursor method callproc()
 9) Added cursor method prepare() which parses (prepares) the statement
    for execution; subsequent execute() or executemany() calls can pass
    None as the statement which will imply use of the previously
    prepared statement; used for high performance only
10) Added cursor method fetchraw() which will perform a raw fetch of the
    cursor returning the number of rows thus fetched; this is used to
    avoid the overhead of generating result sets; used for high
    performance only
11) Added cursor method executemanyprepared() which is identical to the
    method executemany() except that it takes a single argument which is
    the number of times to execute a previously prepared statement and
    it assumes that the bind variables already have their values set;
    used for high performance only
12) Added support for rowid being returned in a select statement
13) Added support for comparing dates returned by cx_Oracle
14) Integrated patch from Andre Reitz to set the null ok flag in the
    description attribute of the cursor
15) Integrated patch from Andre Reitz to setup.py to support compilation
    with Python 1.5
16) Integrated patch from Benjamin Kearns to setup.py to support
    compilation on Cygwin

-- 
Anthony Tuininga
anthony@computronix.com
 
Computronix
Distinctive Software. Real People.
Suite 200, 10216 - 124 Street NW
Edmonton, AB, Canada  T5N 4A3
Phone:	(780) 454-3700
Fax:	(780) 454-3838
http://www.computronix.com