Psycopg – PostgreSQL database adapter for Python — Psycopg 2.4.5 documentation

### Navigation

- index
- modules |
- next |
- Psycopg 2.4.5 documentation »

# Psycopg – PostgreSQL database adapter for Python

Psycopg is a PostgreSQL database adapter for the Python programming language. Its main features are that it supports the full Python DB API 2.0 and it is thread safe (threads can share the connections). 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. The Psycopg distribution includes ZPsycopgDA, a Zope Database Adapter.

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, and a flexible objects adaptation system. Many basic Python types are supported out-of-the-box and mapped to matching PostgreSQL data types, such as strings (both bytes and Unicode), numbers (ints, longs, floats, decimals), booleans and datetime objects (both built-in and mx.DateTime), several types of binary objects. Also available are mappings between lists and PostgreSQL arrays of any supported type, between dictionaries and PostgreSQL hstores, and between tuples/namedtuples and PostgreSQL composite types.

Psycopg 2 is both Unicode and Python 3 friendly.

Contents

- Basic module usage
  - Passing parameters to SQL queries
  - Adaptation of Python values to SQL types
  - Transactions control
  - Server side cursors
  - Thread and process safety
  - Using COPY TO and COPY FROM
  - Access to PostgreSQL large objects
  - Two-Phase Commit protocol support
- The `psycopg2` module content
  - Exceptions
  - Type Objects and Constructors
- The `connection` class
- The `cursor` class
- More advanced topics
  - Connection and cursor factories
  - Adapting new Python types to SQL syntax
  - Type casting of SQL types into Python objects
  - Asynchronous notifications
  - Asynchronous support
  - Support to coroutine libraries
- `psycopg2.extensions` – Extensions to the DB API
  - SQL adaptation protocol objects
  - Database types casting functions
  - Additional exceptions
  - Isolation level constants
  - Transaction status constants
  - Connection status constants
  - Poll constants
  - Additional database types
- `psycopg2.tz` – `tzinfo` implementations for Psycopg 2
- `psycopg2.pool` – Connections pooling
- `psycopg2.extras` – Miscellaneous goodies for Psycopg 2
  - Connection and cursor subclasses
  - Additional data types
  - Fractional time zones
  - Coroutine support
- `psycopg2.errorcodes` – Error codes defined by PostgreSQL
- Frequently Asked Questions
  - Problems with transactions handling
  - Problems with type conversions
  - Best practices
  - Problems compiling and deploying psycopg2

Indices and tables

- Index
- Search Page

### Navigation

- index
- modules |
- next |
- Psycopg 2.4.5 documentation »