eGenix mxODBC 3.2.3 GA

eGenix mxODBC 3.2.3 GA

eGenix is pleased to announce the immediate availability of eGenix mxODBC 3.2.3 - Python ODBC Database Interface, with support for Python 2.4 - 2.7 on all major platforms.


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

>>>   mxODBC Product Page

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

>>>   mx Base Distribution Page


The 3.2.3 release of our mxODBC is the latest patch level release of our popular Python ODBC Interface. In this release, we've included the following the following enhancements and fixes:

Compatibility Enhancements:

  • Added a work-around for a regression in Python 2.7.4 that results in a segfault when exiting Python after loading mxODBC. The regression will be fixed in Python 2.7.5, but we don't want to expose our users to segfaults, so added a work-around.
  • Please also see the mxODBC 3.2.2 announcement for an important new feature which allows to dramatically increase the fetch performance when working with MS SQL Server and IBM DB2 databases.


  • Fixed a bugglet which caused connection.__members__ to no longer list connection attributes.


mxODBC 3.2 was released on 2012-08-28. These are the highlights of the new release:

mxODBC 3.2 Release Highlights

  • Switched to unixODBC 2.3.1+ API: mxODBC is now compiled against unixODBC 2.3.1, which finally removes the problems with the ABI change between 2.2 and 2.3 by switching to a new library version (
  • mxODBC connection objects can now be used as context managers to implicitly commit/rollback transactions.
  • mxODBC cursor objects can now be used as context managers to implicitly close the cursor when leaving the block (regardless of whether an exception was raised or not)
  • mxODBC added support for adjustable .paramstyles. Both 'qmark' (default) and 'named' styles are supported and can be set on connections and cursors. The 'named' style allows easier porting of e.g. Oracle native interface code to mxODBC.
  • mxODBC now supports a writable connection.autocommit attribute to easily turn on/off the connection's auto commit mode.
  • mxODBC added support for adjustable TIMESTAMP precision via the new connection/cursor.timestampresolution attribute.
  • mxODBC will round to nearest nanosecond fraction instead of truncating the value. This will result in fewer conversion errors due to floating point second values.
  • mxODBC's connect APIs Connect() and DriverConnect() support setting connection options prior to connecting to the database via a new connection_options parameter. This allows enabling e.g. the MARS feature in SQL Server Native Client.
  • The connection.cursor() constructor now has a new cursor_options parameters which allows configuring the cursor with a set of cursor options.
  • The .scroll() method supports far more ODBC drivers than before.
  • Updated the SQL lookup object to include more ODBC SQL parameter codes, including special ones for SQL Server and IBM DB2.
  • mx.ODBC.Manager will now prefer unixODBC over iODBC. Previous mxODBC releases used the order iODBC, unixODBC, DataDirect when looking for a suitable ODBC manager on Unix platforms. unixODBC is more widely supported nowadays and provides better Unicode support than iODBC.
For the complete set of features, please have a look at the mxODBC product page.

mxODBC 3.2 Driver Compatibility Enhancements

  • Added work-around for Oracle Instance Client to prevent use of direct execution. cursor.executedirect() will still work, but won't actually use direct execution with the Oracle driver.
  • Added work-around for Oracle Instant Client to prevent segfaults in the driver when querying the cursor.rowcount or cursor.rownumber.
  • Added check to make sure that Python type binding mode is not used with Oracle Instance Client as this can cause segfaults with the driver and generally doesn't work.
  • Added a work-around to have the IBM DB2 driver return correct .rowcount values.
  • Improved Sybase ASE driver compatibility: this only supports Python type binding, which is now enabled per default.
  • Added work-around for PostgreSQL driver, which doesn't support scrollable cursors.
  • Add support for MS SQL Server ODBC Driver 1.0 for Linux to mxODBC
  • Improved compatibility of the mxODBC native Unicode string format handling with Unix ODBC drivers when running UCS4 builds of Python.
  • mxODBC 3.2 now always uses direct execution with the FreeTDS ODBC driver. This results in better compatibility with SQL Server and faster execution across the board.
  • Add work-around to have FreeTDS work with 64-bit integers outside the 32-bit signed integer range.
  • FreeTDS' .rowcount attribute gave misleading values for SELECTs. This now always returns -1 (until they hopefully fix the driver to return usable data).

The complete list of changes is available on the mxODBC changelog page.


mxODBC is available in these three editions:

  • The low-cost Standard Edition which provides data connectivity to a single database type, e.g. just MS SQL Server.
  • The Professional Edition, which gives full access to all mxODBC features.
  • The Product Development Edition, which allows including mxODBC in applications you develop.

Compared to mxODBC 3.0, we have simplified our license terms to clarify the situation on multi-core and virtual machines. In most cases, you no longer need to purchase more than one license per processor or virtual machine, scaling down the overall license costs significantly compared to earlier mxODBC releases.

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


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.

Customers who have purchased mxODBC 3.2 license can continue to use their licenses with this patch level release.

Customers who have purchased mxODBC 2.x, 3.0 or 3.1 licenses, can benefit from upgrade discounts. We will give out 20% discount coupons going from mxODBC 2.x to 3.2 and 50% coupons for upgrades from mxODBC 3.x to 3.2. After upgrade, use of the original license from which you upgraded is no longer permitted.

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

If you want to try the new release before purchase, you can request 30-day evaluation licenses by visiting our web-site or writing to, stating your name (or the name of the company) and the number of eval licenses that you need.


Please visit the eGenix mxODBC product page for downloads, instructions on installation and documentation of the packages.

Note that in order to use the eGenix mxODBC product, you first need to install our open-source eGenix mx Base Distribution.

More Information

For more information on the Python products, licensing and download instructions, please write to

Enjoy !

Marc-Andre Lemburg,

Published: 2013-05-06