Introduction
The mxODBC Connect™ Database Interface for Python allows users to easily connect Python applications to all major databases on the market today in a highly portable, convenient and secure way.
Python Database Connectivity the Easy Way
Building on our mxODBC database interface for Python, mxODBC Connect is designed as client-server application, so you no longer need to find production quality database drivers for all platforms you target with your Python application.
Instead, you use an easy to install royalty-free Python client library which connects directly to the mxODBC Connect database server over the network.
This makes mxODBC Connect a great basis for writing cross-platform multi-tier database applications and utilities in Python, especially if you run applications that need to communicate with databases such as MS SQL Server and MS Access, Oracle Database, IBM DB2 and Informix, Sybase ASE and Sybase Anywhere, MySQL, PostgreSQL, SAP MaxDB and many more, that run on Windows or Linux machines.
Ideal for Database Driven Client Applications
By removing the need to install and configure ODBC drivers on the client side and dealing with complicated network setups for each set of drivers, mxODBC Connect greatly simplifies deployment of database driven client applications, while at the same time making the network communication between client and database server more efficient and more secure.
For more information, please have a look at the mxODBC Connect product page, in particular, the full list of available features:
>>> eGenix mxODBC Connect Product Page
News
mxODBC Connect 2.1.4 is a patch level release of our successful mxODBC Connect database product. It includes these enhancements and fixes:
Security Enhancements
- Updated included OpenSSL libraries to 1.0.1p. Please see the egenix-pyopenssl change log for a complete list of changes. Among other security fixes, this addresses the Logjam attack.
mxODBC Connect Enhancements
- Added support for the BinaryNull work-around added to mxODBC 3.3.5 in order to better support VARBINARY columns in MS SQL Server.
Both mxODBC Connect Client and Server will need to upgraded to version 2.1.4 in order to be able to use the new singleton. - The mxODBC Connect Client can now be compiled to a wheel file to simplify deployment. Simply point the
pip
at the prebuilt archive.
mxODBC API Enhancements
- Upgraded the mxODBC Connect Server to mxODBC 3.3.5.
MS SQL Server
- Documented and recommended use of SET NOCOUNT ON for running multiple statements or stored procedures. This can not only resolve issues with error reporting, it also results in better performance.
- Added a work-around for MS SQL Server Native Client to be able to support VARCHAR/VARBINARY(MAX) columns when using the Native Client with direct execution mode or Python type binding mode. Thanks to ZeOmega for reporting this.
- Added new helper singleton BinaryNull to allow binding a NULL to a VARBINARY column with SQL Server in direct execution mode or Python type binding mode (as used for FreeTDS). Using the usual None doesn't work in those cases, since SQL Server does not accept a VARCHAR data type as input for VARBINARY, except by using an explicit "CAST(? AS VARBINARY)". mxODBC binds None as VARCHAR for best compatibility, when not getting any type hints from the ODBC driver.
- Added a fix for the MS SQL Server Native Client error "[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]The data types varchar and text are incompatible in the equal to operator." when trying to bind a string of more than 256 bytes to a VARCHAR column while using cursor.executedirect(). cursor.execute() was unaffected by this. Thanks to Paul Perez for reporting this.
- Added a note to avoid using "execute " when calling stored procedures with MS SQL Server. This can result in '[Microsoft][SQL Native Client]Invalid Descriptor Index' errors. Simply dropping the "execute " will have the error go away.
- Added a work-around to address the FreeTDS driver error '[FreeTDS][SQL Server]The data types varbinary and image are incompatible in the equal to operator.' when trying to bind binary strings longer than 256 bytes to a VARBINARY column. This problem does not occur with the MS SQL Server Native Client.
- Reenabled returning cursor.rowcount for FreeTDS>= 0.91. In previous
versions, FreeTDS could return wrong data for .rowcount when using
SELECTs.This should make SQLAlchemy users happy again.
- Add work-around to have FreeTDS ODBC driver accept binary data in strings as input for VARBINARY columns. A side effect of this is that FreeTDS will now also accept binary data in VARCHAR columns.
SAP Sybase ASE
- Added work-arounds and improvements for Sybase ASE ODBC drivers to enable working with BINARY and VARBINARY columns.
- Added a work-around for a cursor.rowcount problem with Sybase ASE's ODBC driver on 64-bit platforms. It sometimes returns 4294967295 instead of -1.
- Added note about random segfault problems with the Sybase ASE 15.7 ODBC driver on Windows. Unfortunately, there's nothing much we can do about this, other than recommend using the Sybase ASE 15.5 ODBC driver version which does not have these stability problems.
Fixes
- Added improved documentation on the direct execution model available in mxODBC. This can help in more complex parameter binding situations and also provides performance boosts for a few databases, including e.g. MS SQL Server.
For the full set of changes, including those of the 2.1 series of mxODBC Connect, please check the mxODBC Connect change log.
Features
The mxODBC Connect 2.1 series was announced on 2014-05-28. These are the highlights of the new release:
Stored Procedures
- mxODBC Connect 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
- 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.
- 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 implements, but more efficient and specific to result sets.
Asynchronous Processing
- Compatible with the latest gevent and greenlet packages. mxODBC Connect Client will happily work together with the asynchronous libraries gevent. All it takes is a single configuration entry in the client side config file.
Upgrading
You are encouraged to upgrade to this latest mxODBC Connect release. When upgrading, please always upgrade both the server and the client installations to the same version - even for patch level releases.
We will give out 20% discount coupons for upgrade purchases going from mxODBC Connect Server 1.x to 2.1 and 50% coupons for upgrades from mxODBC Connect Server 2.x to 2.1. Please contact the eGenix.com Sales Team with your existing license serials for details.
Users of our stand-alone mxODBC product will have to purchase new licenses from our online shop in order to use mxODBC Connect.
You can request free 30-day evaluation licenses via our web-site or writing to sales@egenix.com, stating your name (or the name of the company) and the number of eval licenses that you need.
Downloads
Please visit the eGenix mxODBC Connect product page for downloads, instructions on installation and documentation of the client and the server package.
If you want to try the package, please jump straight to the download instructions.
Fully functional evaluation licenses for the mxODBC Connect Server are available free of charge.
The mxODBC Connect Client is always free of charge.
Support
Commercial support for this product is available directly from eGenix.com.
Please see the support section of our website for details.
More Information
For more information on eGenix mxODBC Connect, licensing and download instructions, please write to sales@egenix.com.
Enjoy !
Marc-Andre Lemburg, eGenix.com