txpostgres icon indicating copy to clipboard operation
txpostgres copied to clipboard

Twisted wrapper for asynchronous PostgreSQL connections

This is txpostgres is a library for accessing a PostgreSQL_ database from the Twisted_ framework. It builds upon asynchronous features of the Psycopg_ database library, which in turn exposes the asynchronous features of libpq_, the PostgreSQL C library.

It requires a version of Psycopg that includes support for asynchronous connections_ (versions 2.2.0 and later) and a reasonably recent Twisted (it has been tested with Twisted 10.2 onward). Alternatively, psycopg2cffi_ or psycopg2-ctypes_ can be used in lieu of Psycopg.

txpostgres tries to present an interface that will be familiar to users of both Twisted and Psycopg. It features a Cursor_ wrapper class that mimics the interface of a Psycopg cursor_ but returns Deferred_ objects. It also provides a Connection_ class that is meant to be a drop-in replacement for Twisted's adbapi.Connection_ with some small differences regarding connection establishing.

The main advantage of txpostgres over Twisted's built-in database support is non-blocking connection building and complete lack of thread usage.

It runs on Python 2.6, 2.7, 3.4, 3.5 and PyPy_.

If you got txpostgres as a source tarball, you can run the automated test suite and install the library with::

tar xjf txpostgres-x.x.x.tar.bz2 cd txpostgres-x.x.x trial test sudo python setup.py install

Alternatively, just install it from PyPI_::

pip install txpostgres

The library is distributed under the MIT License, see the LICENSE file for details. You can contact the author, Jan Urbański, at [email protected]. Feel free to download the source_, file bugs in the issue tracker_ and consult the documentation_

.. _PostgreSQL: http://www.postgresql.org/ .. _Twisted: http://twistedmatrix.com/ .. _Psycopg: http://initd.org/psycopg/ .. _Python: http://www.python.org/ .. _libpq: http://www.postgresql.org/docs/current/static/libpq-async.html .. _asynchronous connections: http://initd.org/psycopg/docs/advanced.html#async-support .. _psycopg2cffi: https://github.com/chtd/psycopg2cffi .. _psycopg2-ctypes: http://pypi.python.org/pypi/psycopg2ct .. _Cursor: http://wulczer.github.com/txpostgres/txpostgres.html#txpostgres.Cursor .. _Psycopg cursor: http://initd.org/psycopg/docs/cursor.html#cursor .. _Deferred: http://twistedmatrix.com/documents/current/api/twisted.internet.defer.Deferred.html .. _Connection: http://wulczer.github.com/txpostgres/txpostgres.html#txpostgres.Connection .. _adbapi.Connection: http://twistedmatrix.com/documents/current/api/twisted.enterprise.adbapi.Connection.html .. _PyPy: http://pypy.org/ .. _PyPI: http://pypi.python.org/pypi/txpostgres .. _source: https://github.com/wulczer/txpostgres .. _issue tracker: https://github.com/txpostgres/issues .. _documentation: http://txpostgres.readthedocs.org/

.. image:: https://secure.travis-ci.org/wulczer/txpostgres.png?branch=master