ANNOUNCE: KirbyBase 1.8

Jamey Cribbs jcribbs at
Sun Feb 20 23:06:01 CET 2005

KirbyBase is a simple, plain-text, database management system written in 
Python.  It can be used either embedded in a python script or in a 
client/server, multi-user mode.  You use python code to express your 
queries instead of having to use another language such as SQL.  
KirbyBase is disk-based, not memory-based.  Database changes are 
immediately written to disk.

You can find more information on KirbyBase at:

You can download KirbyBase for Python at:

The most noticeable things about this release are (1) the ability to 
sort the result set by multiple fields, (2) the ability to have the 
result set returned as a nicely formatted report, suitable for printing, 
and (3) the ability to do an insert or an update using a record object 
(thanks, Fred Pacquier, for the suggestion).

The manual has also been updated to reflect the new features.

Also, for those of you who have asked how Kirby is doing, I have a 
couple of new pictures of him on the website.  :-)

I would like to thank everyone who has emailed me with comments, bug 
reports, and enhancement requests/ideas.  Hearing from people who 
actually use KirbyBase is what makes working on it worthwhile.  Please 
keep the emails coming!

Changes in Version 1.8:

         ********   IMPORTANT - Method Interface Changes   ****************
        -Added the ability to sort the result set of a select by multiple
         fields and to specify whether each field should be sorted
         ascending or descending.  This necessitated a change to the
         interface of the select method.  I moved the position of sortField
         in the argument list and also changed it to be a list instead of a
         string.  I also changed the name of sortField to sortFields. I
         also moved sortDesc in the arguement list and also made it a list.
        -Added another allowable value, 'report',  to the keyword
         parameter, returnType in the select method.  This returns the
         result set in a pretty print format.  Along with this, added
         another keyword parameter called rptSettings to the select method.
         This is only used if rptType is 'report'.  It is a 2 element list.
         The first element specifies the number of records to print on a
         page.  The second element is boolean specifying whether to print
         a dashed line between records.
        -Added ability to pass field values to update and insert using an
         object with attributes set equal to the field names.
        -Fixed a bug in _getMatches.  If a field of type int or float had
         a blank value in the table (i.e. ''), the code was attempting to
         convert it to it's proper type (i.e. int or float) before
         doing the match comparison.  This would cause an exception to
         occur.  Now, if the field is an int,float,date or datetime and it
         is blank, I convert it to None.  This allows the numeric
         comparisons to work correctly for null fields.
        -Fixed a bug in select.  If a field in the result set was equal
         to '', I was letting it stay that way, when I should really be
         converting it to None before returning the result set.
        -Cleaned up the internals a bit.  Mainly, I tried to use functions
         in the operator module like lt and ge instead of hardcoding < and
         >= in an if statement.

Jamey Cribbs
jcribbs at

More information about the Python-announce-list mailing list