PostgreSQL database adapter for the Python programming language
Go to file
Jan Urbański a59704cf93 Make sure libcrypto threadsafety callbacks are properly set up
Multithreaded programs using libcrypto (part of OpenSSL) need to set up
callbacks to ensure safe execution. Both Python and libpq set up those
callbacks, which might lead to a conflict.

To avoid leaving dangling function pointers when being unloaded, libpq sets up
and removes the callbacks every time a SSL connection it opened and closed. If
another Python thread is performing unrelated SSL operations (like connecting
to a HTTPS server), this might lead to deadlocks, as described in
http://www.postgresql.org/message-id/871tlzrlkq.fsf@wulczer.org

Even if the problem will be remediated in libpq, it's still useful to have it
fixed in psycopg2. The solution is to use Python's own libcrypto callbacks and
completely disable handling them in libpq.
2015-05-03 12:27:36 +01:00
doc Improve docs about connection's with only closing the transaction 2015-05-03 12:01:06 +01:00
examples cleanup remaining GPL license text 2014-05-20 09:50:53 -07:00
lib Fixed MinTimeLoggingCursor.callproc() 2015-05-03 10:30:11 +01:00
psycopg Make sure libcrypto threadsafety callbacks are properly set up 2015-05-03 12:27:36 +01:00
sandbox cleanup remaining GPL license text 2014-05-20 09:42:41 -07:00
scripts Don't need to build the env for a sdist 2014-09-01 16:29:38 +01:00
tests Fix several typos 2015-05-03 10:30:21 +01:00
.gitignore Added scripts to release and upload docs 2014-09-01 16:29:38 +01:00
.travis.yml Add .travis.yml for Travis CI (http://travis-ci.org/) 2012-06-15 08:07:19 -07:00
AUTHORS Preparing release 2.3.0-beta1 2010-11-06 15:50:39 +01:00
INSTALL Dropped content from the INSTALL file 2014-08-24 02:06:09 +01:00
LICENSE Changes license to LGPL3 + OpenSSL exception on all source files 2010-02-12 23:34:53 +01:00
Makefile Docs build process and docs cleaned up 2015-04-28 09:32:58 +01:00
MANIFEST.in Added missing files needed to build the docs 2015-04-28 08:38:57 +01:00
NEWS Unlock the connection after PQflush error 2015-05-03 12:01:05 +01:00
psycopg2.cproj Dropped outdated HACKING file 2014-08-24 02:06:09 +01:00
psycopg2.sln New 'withhold' parameter for connection.cursor() 2011-08-10 18:25:46 +02:00
README.rst Direct link to the install docs in the readme 2014-08-24 23:33:14 +01:00
setup.cfg Dropped HAVE_PQFREEMEM flag 2014-08-24 01:43:12 +01:00
setup.py Bump to next dev version number for the master branch 2015-04-28 08:38:41 +01:00
tox.ini Dropped Zope support 2012-12-03 02:53:20 +00:00

psycopg2 - Python-PostgreSQL Database Adapter
=============================================

Psycopg is the most popular PostgreSQL database adapter for the Python
programming language.  Its main features are the complete implementation of
the Python DB API 2.0 specification and the thread safety (several threads can
share the same connection).  It was designed for heavily multi-threaded
applications that create and destroy lots of cursors and make a large number
of concurrent "INSERT"s or "UPDATE"s.

Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in being
both efficient and secure.  It features client-side and server-side cursors,
asynchronous communication and notifications, "COPY TO/COPY FROM" support.
Many Python types are supported out-of-the-box and adapted to matching
PostgreSQL data types; adaptation can be extended and customized thanks to a
flexible objects adaptation system.

Psycopg 2 is both Unicode and Python 3 friendly.


Documentation
-------------

Documentation is included in the 'doc' directory and is `available online`__.

.. __: http://initd.org/psycopg/docs/


Installation
------------

If all the dependencies are met (i.e. you have the Python and libpq
development packages installed in your system) the standard::

    python setup.py build
    sudo python setup.py install

should work no problem.  In case you have any problem check the 'install' and
the 'faq' documents in the docs or online__.

.. __: http://initd.org/psycopg/docs/install.html

For any other resource (source code repository, bug tracker, mailing list)
please check the `project homepage`__.

.. __: http://initd.org/psycopg/