ANN: eGenix mxODBC 3.3.0 - Python ODBC Database Interface

eGenix Team: M.-A. Lemburg info at
Tue Apr 8 09:18:21 CEST 2014




                   Python ODBC Database Interface

                           Version 3.3.0

    mxODBC is our commercially supported Python extension providing
         ODBC database connectivity to Python applications
            on Windows, Mac OS X, Unix and BSD platforms

This announcement is also available on our web-site for online reading:



mxODBC provides an easy-to-use, high-performance, reliable and robust
Python interface to ODBC compatible databases such as MS SQL Server,
MS Access, Oracle Database, IBM DB2 and Informix , Sybase ASE and
Sybase Anywhere, MySQL, PostgreSQL, SAP MaxDB and many more:

The "eGenix mxODBC - Python ODBC Database Interface" product is a
commercial extension to our open-source eGenix mx Base Distribution:



The 3.3.0 release of our mxODBC is a new release of our popular Python
ODBC Interface for Windows, Linux, Mac OS X and FreeBSD.

New Features in 3.3

Stored Procedures

 * mxODBC now has full support for input, output and input/output
   parameters in stored procedures and stored functions, allowing easy
   integration with existing databases systems.

User Customizable Row Objects

 * Added support for user customizable row objects by adding
   cursor/connection .rowfactory and .row constructor attributes. When
   set, these are used to wrap the normal row tuples returned by the
   .fetch*() methods into dynamically created row objects.

 * Added new RowFactory classes to support cursor.rowfactory and
   cursor.row. These allow dynamically creating row classes that
   provide sequence as well as mapping and attribute access to row
   fields - similar to what namedtuples implement, but specific to
   result sets.

Fast Cursor Types

 * Switched to forward-only cursor types for all database backends,
   since this provides a much better performance for MS SQL Server and
   IBM DB2 drivers.

 * Added a new .cursortype attribute to allow adjusting and inspecting
   the ODBC cursor type to be used for an mxODBC cursor
   object. Default is to use forward-only cursors, but mxODBC also
   support several other useful cursor types such as static cursors
   with full support for result set scrolling.

More new Features

 * Custom errorhandlers are now also called very early during the
   connection process. This makes it possible to debug e.g. ODBC
   driver/manager setup problems from within Python, without having to
   resort to ODBC trace files.

 * Enhanced cursor.prepare() to allow querying cursor.description
   right after the prepare step and not only after calling a
   cursor.execute*() method.

 * Added iterator/generator support to .executemany(). The parameters
   list can now be an iterator/generator, if needed.

 * Added new connection.dbapi property to easily access module level
   symbols from the connection object.

 * Timestamp seconds fraction resolution is now determined from the
   scale of a datetime/timestamp SQL column, using the
   connection.timestampresolution as lower bound, when using SQL type
   binding. In Python type binding, the connection.timestampresolution
   determines the scale with which a variable is bound. This allows
   for greater flexibility when dealing with database backends that
   don't provide full nano-second second resolution, such as e.g. MS
   SQL Server.

 * mxODBC now accepts Unicode string values for
   date/time/datetime/timestamp column types in SQL type binding
   mode. Previous versions already did in Python type binding mode.

 * mxODBC now uses unicode(obj, encoding) semantics when binding
   Python objects to SQLWCHAR database parameters. Additionally, it
   ignores the encoding in case obj is a number, to avoid conversion

 * Added new cursor.encoding and (read-only) cursor.converter
   attributes. Both inherit their default values from the connection
   the cursor was created on.

 * Added cursor.bindmethod which inherits from connection.bindmethod
   when creating the cursor. This allows adjusting the variable bind
   method on a per-cursor basis, rather than only on a per connection
   basis as in previous mxODBC versions.

 * mxODBC is now built against unixODBC 2.3.2.

 * The SQL lookup object now supports ODBC 3.8 symbols and values,
   including driver specific symbols used by the MS SQL Server Native
   Client and IBM DB2 ODBC drivers.

 * Updated the DataDirect binding to version 7.1.2 of the DataDirect
   ODBC manager.

For the full set of features mxODBC has to offer, please see:

Driver Compatibility Enhancements


 * Added work-around for Oracle Instant Client to be able to use
   integer output parameters.

 * Added a work-around for Oracle Instant Client to have it return
   output parameters based on the input placeholder Python parameter
   types. It would otherwise return all parameters as strings.

 * Disabled a test for Oracle Instant Client which tries to set a
   pre-connect connection option for timeouts, since the ODBC driver
   segfaults with this option.

MS SQL Server

 * mxODBC now defaults to 100ns connection.timestampresolution for MS
   SQL Server 2008 and later, and 1ms resolution for MS SQL server
   2005 and earlier. This simplifies interfacing to SQL Server
   timestamp columns by preventing occasional precision errors.

 * Tested mxODBC successfully with new MS SQL Server Native Client 11
   for Linux. Unicode connection strings still don't work, but
   everything else does.

 * Added documentation on how to use Kerberos with mxODBC and SQL
   Server fo authentication on both Windows and Linux.

 * Added note about problems of the FreeTDS ODBC driver dealing with
   TIME and DATE columns to the documentation.

Sybase ASE

 * Added work-around for the Sybase ASE ODBC driver, which doesn't
   always pass back NULL correctly to mxODBC on 64-bit Unix systems.

 * Changed the variable type binding mode default for the Sybase ASE
   ODBC driver from Python type binding to SQL type binding, which
   resolves issues with e.g. the Unicode support for that driver.

 * Added note about a segfault problem with the Sybase ASE 15.7 ODBC
   driver which is caused by the driver corrupting the heap.


 * Added work-around for the IBM DB2 ODBC driver, which doesn't always
   pass back NULL correctly to mxODBC on 64-bit Unix systems.


 * Added work-around to force Python type binding for the PostgreSQL
   ODBC drivers. More recent versions of the driver report supporting
   SQL type binding, but they don't implement it.

 * Added work-around to have PostgreSQL ODBC drivers properly work
   with binary data for BYTEA columns.


 * mxODBC now supports native Unicode with the recent MySQL ODBC
   drivers - provided you use the Unicode variants of the drivers.

 * Changed the default binding mode for MySQL ODBC drivers to Python
   type binding. This works around a problem with date/time values
   when talking to MySQL 5.6 servers.

For the full set of changes please check the mxODBC change log:

The Future

 * Please note that this will be the last release of mxODBC for Python
   2.4, 2.5 and 2.6. For the next release of mxODBC, we are focusing
   on making the code Python 2.7 and Python 3.x compatible, dropping
   support for earlier Python versions.

 * If you need long term support for these older Python versions,
   please contact sales at We can then arrange custom support
   contracts for you.

mxODBC Editions

mxODBC is available in these two editions:

 * The Professional Edition, which gives full access to all mxODBC

 * The Product Development Edition, which allows including mxODBC in
   applications you develop.

For a complete overview of the new editions, please see the product page.



The download archives and instructions for installing the package can
be found at:

In order to use the eGenix mxODBC package you will first need to
install the eGenix mx Base package:



Users are encouraged to upgrade to this latest mxODBC release to
benefit from the new features and updated ODBC driver support.

We have taken special care, not to introduce backwards incompatible
changes, making the upgrade experience as smooth as possible.

For upgrade purchases, we will give out 20% discount coupons going
from mxODBC 2.x to 3.3 and 50% coupons for upgrades from mxODBC 3.x to
3.3. After upgrade, use of the original license from which you
upgraded is no longer permitted.

Please contact the Sales Team at sales at with your
existing license serials for details for an upgrade discount coupon.

If you want to try the new release before purchace, you can request
30-day evaluation licenses by visiting our web-site

or by writing to sales at, stating your name (or the name of
the company) and the number of eval licenses that you need.



Commercial support for this product is available from
Please see

for details about our support offerings.



About Python (

    Python is an object-oriented Open Source programming language
    which runs on all modern platforms. By integrating ease-of-use,
    clarity in coding, enterprise application connectivity and rapid
    application design, Python establishes an ideal programming
    platform for today's IT challenges.

About eGenix (

    eGenix is a software project, consulting and product company
    focusing on expert services and professional quality products for
    companies, Python users and developers.

PS: If you want to meet with eGenix at PyCon 2014, please send an
email and we can arrange a meeting.

Marc-Andre Lemburg

Professional Python Services directly from the Source  (#1, Apr 08 2014)
>>> Python Projects, Consulting and Support ...
>>> mxODBC.Zope/Plone.Database.Adapter ...
>>> mxODBC, mxDateTime, mxTextTools ...
2014-04-09: PyCon 2014, Montreal, Canada ...                    tomorrow
2014-04-29: Python Meeting Duesseldorf ...                 21 days to go

::::: Try our mxODBC.Connect Python Database Interface for free ! :::::: Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611

More information about the Python-announce-list mailing list