[ANN] pyPgSQL 2.2 released

Gerhard Häring gerhard.haering@gmx.de
Sun, 8 Sep 2002 19:29:43 +0200

Announce: pyPgSQL - Version 2.2 is released.

pyPgSQL v2.2 has been released. It is a bug fix release to version 2.1.

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.1

The following source code files were added to Version 2.2 of pyPgSQL:

    pyPgSQL.spec	- RPM spec file, contributed by Sean Reifschneider.

Changes to README
* Added note about case-insensitiveness of column access in PgResultSet.

Changes to PgSQL.py
* Fixed various problems with the PgResultSet: Column (attribute and
dictionary) access is now case-insensitive.  A __contains__ method was added
and the __setattr__ method was fixed. The get method got an optional default
value parameter.

* Fixed various problems with the PgNumeric type:
  - Added code to allow a float as an argument to the PgNumeric constructor.
  - You can now change the precision/scale of a PgNumeric by:
      a = PgNumeric(pgnumeric, new prec, new scale).
    This can be used to 'cast' a PgNumeric to the proper precision and scale
    before storing it in a field.
  - The arithmatic routines (__add__, __radd__, etc) now ensure that the
    arguments are properly coerced to the correct types.
  - Added support for the augmented arithmetic operations (__iadd__, etc).
  - The math routines would lose precision because the precision/ scale were
    set to be the same as the first operand.  This is no longer the case all
    precision is retained for the +, -, and * operations.

* Fixed problem that occurs when a query on an OID field doesn't return any
rows. [Bug #589370].
* Applied patch #569203 and also added __pos__ and __abs__ special methods to

* Ensure proper SQL-quoting of long ints.

Changes to PgSQLTestcases.py
* 14 new tests, mostly for PgNumeric and PgResultSet.