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.
Firebird-Python Power ToolsPavel Cisar, May 28, 2009
PowerConsoleToday I released PowerConsole v.0.7 to the public. PowerConsole is an enhanced Python interpreter that can host user defined commands. It uses pyparsing-based grammars for user commands to translate them into python calls, so it has limited support for mixing them with Python code. A basic, ready to use CLI interpreter is included.
PowerConsole is the evolution of Firebird PowerTool I presented at Firebird Conference 2006 (
Transcript, must RIGHT-CLICK and Save As..). It's the universal execution engine for user commands and the new Firebird PowerTool is built on top of it as plugin (command package). Actually, the Firebird QA tool set is being rewritten on top of it too.
Both expansions are still in development so they're not on PyPI yet, but you may taste them by installing
pwcfb (Firebird PowerTool) or
pwcfbqa (Firebird QA package) from the
PowerConsole download area.
Use easy_install with the -f option to point to it.
The core is considered stable, and you can start to develop your own commands for it.
FeedbackYour comments, via the Firebird-Python list, are welcome.
Subscribe here.
Requirements - Python 2.5 or 2.6
- kinterbasdb (for firebird and qa expansions)
- qmtest (for qa expansion)
- other dependencies are resolved by easy_install, however cheetah-community-edition (for qa expansion) must be taken from our site (use the -f switch).
Links InstallationUse
easy_install from the python setuptools package to download and install it.
If you don't have setuptools installed yet, download and run
this python script.