Firebird Driver for Python
The current driver for Python language is called KInterbasDB, and was developed and maintained by Davis S. Rushby independently to the Firebird project. Unfortunately, the development of this driver was discontinued after David died in drowning accident and nobody took over the project. However, the Firebird QA project which uses Python extensively depends heavily on this driver, so we had to find a solution for future. We have considered the option to take over this project, but we decided that's not practical for next reasons:
- KInterbasDB also supports InterBase, but we don't have necessary expertise to maintain or even expand it's IB support (both products divert from each other more and more with every new version). So if KDB would be maintained by Firebird Project, the IB support would be eventually dropped, which we would consider as unfair to current KDB users.
- KInterbasDB is currently implemented as C extension library wrapped in a pile of Python code. This arrangement puts significant difficulties on any developer that would like provide it on various OS (Firebird runs on more than Windows and Linux) and Python platforms (for example IronPython, PyPy). The future of this project seems to be in complete rewrite in pure Python that talks directly to Firebird using the wire protocol instead using the client library, i.e. in the same way like JayBird type 4 driver or .NET Provider driver works. So while we'll maintain current KDB for some time, it will be eventually replaced with completely new driver written from scratch, and although we'd like keep it backward compatible, it's not necessary to do that. Hence it's possible that next major version of KDB would be different product anyway.
In light of these arguments, we decided to start a completely new subproject for Firebird Python driver. Until stable version of completelly new Driver would be available, we will provide maintenance releases for KInterbasDB to keep it working with latests Firebird engine. We also have snapshots of KDB 3.3 created by David that adds significant new feature - support for multiple transaction in single connection, which would make the basis for next version (it's stable, but not thoroughly tested), and we would like release this version as well in David's memory.
Current Release: KInterbasDB 3.3
See Change Log for details about this release.
IMPORTANT NOTE:
Because Firebird 2.1 client library is statically linked to glibc on Linux, you may encounter (typically on 32-bit Linux system) an error "ImportError: /usr/lib/libfbclient.so.2: undefined symbol: _Unwind_GetIP" when importing kinterbasdb. This issue will be addressed by next Firebird 2.1 maintenance release. Meanwhile you can fix it using LD_PRELOAD environment variable to preload libgcc_s.so before running any program that uses kinterbasdb.
Back to Developer's Corner.
|
|