Psycopg – PostgreSQL database adapter for Python — Psycopg 2.5.2 documentation

### Navigation

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

# Psycopg – PostgreSQL database adapter for Python

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.

Contents

- Introduction
- Installation
  - Install from a package
  - Install from source
  - Creating a debug build
  - If you still have problems
- 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 for 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
- Release notes
  - Current release
  - What’s new in psycopg 2.5
  - What’s new in psycopg 2.4
  - What’s new in psycopg 2.3
  - What’s new in psycopg 2.2
  - What’s new in psycopg 2.0

Indices and tables

- Index
- Search Page

### Navigation

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