Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A Pure-Python PostgreSQL Driver
Python Shell
Latest commit f44e04e @tlocke tlocke Test directly for presence of tzset()
For a few tests we need to set the local time zone to UTC. For that we
use tzset(), which may not be available depending on the platform. We
now test directly for time.tzset() rather than checking the platform.



pg8000 is a pure-Python PostgreSQL driver that complies with DB-API 2.0. The driver communicates with the database using the PostgreSQL Backend / Frontend Protocol.

CircleCI Build Status: CircleCI


Regression Tests

To run the regression tests, install tox:

pip install tox

then install all the supported Python versions (using the APT Repository if you're using Ubuntu. Install all the currently supported versions of PostgreSQL (using the APT Repository if you're using Ubuntu. Then for each of them, enable the hstore extension by running the SQL command:

create extension hstore;

and add a line to pg_hba.conf for the various authentication options, eg.

host    pg8000_md5      all               md5
host    pg8000_gss      all               gss
host    pg8000_password all               password
host    all             all               trust

Set the following environment variables for the databases, for example:

export PG8000_TEST_NAME="PG8000_TEST_9_4"
export PG8000_TEST_9_0="{'user': 'postgres', 'password': 'pw', 'port': 5432}"
export PG8000_TEST_9_1="{'user': 'postgres', 'password': 'pw', 'port': 5433}"
export PG8000_TEST_9_2="{'user': 'postgres', 'password': 'pw', 'port': 5434}"
export PG8000_TEST_9_3="{'user': 'postgres', 'password': 'pw', 'port': 5435}"
export PG8000_TEST_9_4="{'user': 'postgres', 'password': 'pw', 'port': 5436}"

then run tox from the pg8000 directory:


Unfortunately, tox doesn't support Python 2.5, so to test CPython 2.5 and Jython 2.5, run the run_25 script.

Performance Tests

To run the performance tests from the pg8000 directory:

python -m pg8000.tests.performance

Stress Test

There's a stress test that is run by doing:

python ./multi

The idea is to set shared_buffers in postgresql.conf to 128kB, and then run the stress test, and you should get no unpinned buffers errors.

Building The Documentation

The docs are written using Sphinx. To build them, install sphinx:

pip install sphinx

Then type:

python build_sphinx

and the docs will appear in build/sphinx/html.

Doing A Release Of pg8000

Run tox and run_25 to make sure all tests pass, then update doc/release_notes.rst then do:

git tag -a x.y.z -m "Version x.y.z"
python register sdist bdist_wheel upload build_sphinx upload_docs

Then post a message to the forum.

Something went wrong with that request. Please try again.