# 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 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

- Installation
  - Quick Install
  - Prerequisites
  - Non-standard builds
  - Running the test suite
  - 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
  - Replication protocol support
- `psycopg2.extensions` – Extensions to the DB API
  - Classes definitions
  - SQL adaptation protocol objects
  - Database types casting functions
  - Additional exceptions
  - Coroutines support functions
  - Other functions
  - Isolation level constants
  - Transaction status constants
  - Connection status constants
  - Poll constants
  - Additional database types
- `psycopg2.extras` – Miscellaneous goodies for Psycopg 2
  - Connection and cursor subclasses
  - Replication support objects
  - Additional data types
  - Fast execution helpers
  - Coroutine support
- `psycopg2.errors` – Exception classes mapping PostgreSQL errors
  - SQLSTATE exception classes
- `psycopg2.sql` – SQL string composition
  - Module usage
  - `sql` objects
- `psycopg2.tz` – `tzinfo` implementations for Psycopg 2
- `psycopg2.pool` – Connections pooling
- `psycopg2.errorcodes` – Error codes defined by PostgreSQL
- Frequently Asked Questions
  - Meta
  - Problems with transactions handling
  - Problems with type conversions
  - Best practices
  - Problems compiling and installing psycopg2
- Release notes
  - Current release
  - What’s new in psycopg 2.9
  - What’s new in psycopg 2.8
  - What’s new in psycopg 2.7
  - What’s new in psycopg 2.6
  - 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
- License
  - psycopg2 and the LGPL
  - Alternative licenses

Indices and tables

- Index

- Module Index

- Search Page