Skip to content
Python DB-API interface on top of PL/Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


This module provides a (sort of) Python DB-API 2.0 compatible interface on top of PL/Python.

About DB-API:

About PL/Python:


plpydbapi supports Python 2.6 and later, including Python 3.x, and requires PostgreSQL 9.1 or later. Using cursor.description requires PostgreSQL 9.2.

Just install it like any setuptools-enabled Python module, for example

python install

or use easy_install. Make sure you use the Python version that your installation of PL/Python was built against.


Here is an example how to use it:

import plpydbapi

dbconn = plpydbapi.connect()
cursor = dbconn.cursor()
cursor.execute("SELECT ... FROM ...")
for row in cursor.fetchall():
    plpy.notice("got row %s" % row)

Test suite

Build Status

There is a test suite in the test/ subdirectory. It uses the DB-API compliance test framework from So first fetch, er, clone, er, branch yourself a copy of that

bzr branch lp:dbapi-compliance

into the current directory. If you have mr, just run mr up.

If you are using Python 2.6, you also need the unittest2 package; with Python 2.7 and later, the unittest module in the standard library is enough.

Then run

python test

This will run the unittest suite inside the PostgreSQL server, forwarding the output for the client to see.

If you have a complicated setup, such as multiple PostgreSQL versions or nonstandard ports, use libpq environment variables such as PGHOST and PGPORT to point the test suite driver to an instance it can use. You can also look into the files and test/run_test_plpydbapi_dbapi20.sql for some additional ways to tweak the process.

Something went wrong with that request. Please try again.