eGenix is pleased to announce the immediate availability of eGenix mxODBC™ 3.3.2 - Python ODBC Database Interface, with many advanced Python DB-API extensions and enhanced support of stored procedures with input, output and input/output parameters. Available for Python 2.4 - 2.7 on all major platforms.
The 3.3.2 release of our mxODBC
is a patch level release of our popular Python ODBC Interface for
Windows, Linux, Mac OS X and FreeBSD. It includes these enhancements and
MS SQL Server
Fixed an "ODBC driver sent negative string size" error when using empty
strings or None with output parameters for SQL Server
Clarified that due to the way the SQL Server ODBC driver sends data, mixing output parameters and output result sets is not possible. A work-around for this is to send back output parameters as additional result set.
SAP Sybase ASE
Added a work-around for the Sybase ASE ODBC driver which has problems with BIGINT columns. These are now supported.
Fixed a possible "ODBC driver sent negative string size" error when using empty
strings or None with output parameters for Sybase ASE
Fixed the handling of None as default value for output parameters in e.g.
stored procedures to use VARCHAR binding rather than CHAR binding. The
latter caused padding with some database backends.
Changed cursor.colcount to be determined
on-demand rather than right after the prepare step of statement
Fixed an issue with mxODBC triggering unwanted ODBC errors after the prepare
step when calling a stored procedure. These were not reported, but do
show up in the ODBC log.
Fixed some minor issues with the package web installer.
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.
mxODBC 3.3 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.
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
Added documentation on how to use Kerberos with mxODBC and SQL Server fo authentication on both Windows and Linux.
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 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.
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.3 licenses can continue to use their licenses with this patch level release.
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. Please contact the eGenix.com Sales Team with your existing license serials for details for an upgrade discount coupon.