[DB-SIG] [ANN] pyPgSQL 2.1 released

Gerhard Häring haering_postgresql@gmx.de
Wed, 5 Jun 2002 11:43:56 +0200

Announce: pyPgSQL - Version 2.1 is released.

pyPgSQL v2.1 has been released. It is a bug fix release to version 2.0, but
also includes some enhancements.

It is available at http://pypgsql.sourceforge.net.

pyPgSQL is a package of two (2) modules that provide a Python DB-API 2.0
compliant interface to PostgreSQL databases. The first module, libpq,
exports the PostgreSQL C API to Python. This module is written in C and
can be compiled into Python or can be dynamically loaded on demand. The
second module, PgSQL, provides the DB-API 2.0 compliant interface and
support for various PostgreSQL data types, such as INT8, NUMERIC, MONEY,
BOOL, ARRAYS, etc. This module is written in Python and works with
PostgreSQL 7.0 or later and Python 2.0 or later.

Note: It is highly recommended that you use PostgreSQL 7.1 or later and
Python 2.1 or later.

PostgreSQL is a sophisticated Object-Relational DBMS, supporting almost all
SQL constructs, including sub-selects, transactions, and user-defined types
and functions. It is the most advanced open-source database available any-
where More information about PostgreSQL can be found at the PostgreSQL home
page at http://www.postgresql.org.

Python is an interpreted, interactive, object-oriented programming lang-
uage. It combines remarkable power with very clear syntax. It has mod-
ules, classes, exceptions, very high level dynamic data types, and dynamic
typing. There are interfaces to many system calls and libraries, as well
as to various windowing systems (X11, Motif, Tk, Mac, MFC). New builtin
modules are easily written in C or C++. Python is also usable as an exten-
sion language for applications that need a programmable interface. Python
is copyrighted but freely usable and distributable, even for commercial
use. More information about Python can be found on the Python home page at


Changes since pyPgSQL Version 2.0

pyPgSQL 2.1 is now compatible and tested to work with PostgreSQL 7.2.x.

Changes to README
* Added documentation for the new TransactionLevel attribute of
the Connection object.

Changes to PgSQL.py
* Added code to implement support for setting PostgreSQL transaction
levels. [Feature Request #481727].

* Got rid of redundant building and storing of the
mapping of column names to column positions in the PgResultSet class. Now,
rows of the same query are instances of a dynamically created class, which
has this mapping as a class attribute instead of an attribute of the
instance. This saves a lot of space, and also slightly increases
performance of cursor fetches.
* Fixed the array parsing so it also works with PostgreSQL versions 7.2.x.
The PostgreSQL developers changed the quoting in the string representation
of arrays in 7.2 beta cycle: strings are now only quoted when otherwise
the array representation would be ambiguous. The new parseArray() method
should handle the old and new way of quoting in arrays. [Bug #539769].
Also added a new testcase for the ARRAY type.

* Improved the array parsing, so that it now passes all
the new mean testcases. Added support for parsing multidimensional arrays.
Eventually, the array parsing code should go as a support function into

* Replaced all typechecks with "is" operators instead
of equals. Mark McEahern had a problem with using pyPgSQL in combination
with a FixedPoint class where the reason was that the FixedPoint class was
not comarable to None. The consensus on python-list was that None and all
types are singletons, so they should be checked using "is", which is also
faster, because it only checks for object identity.

* Fixed a couple of problems found by Steven D. Arnold:
1. A undefined variable was used in a few places where notices were popped
   from the notice list.
2. Comparisons between 2 PgNumerics gave the wrong result.

* Fixed problem that occurs when the sum() aggregate returns a
NULL. [Bug #505162].

Changes to pgversion.c
* Allow for development and beta versions of PostgreSQL

Changes to libpqmodule.c
* Removed special escaping of control characters in arrays.

* Added support for two missing OID types: aclitem and macaddr. 

* Applied patch by Chris Bainbridge [Patch #505941] "fix for null bytes in

Changes to pgresult.c
* Change the point at which an OID is tested to see if it is a
Large Object from 1700 to 16383.