psycopg2

2.9.11 · active · verified Tue Mar 24

The most widely used PostgreSQL adapter for Python. Sync only. Two packages on PyPI: psycopg2 (source, requires libpq dev headers) and psycopg2-binary (pre-compiled, no system deps). Official docs explicitly warn against psycopg2-binary in production. Current version: 2.9.11 (Mar 2026). For async PostgreSQL use asyncpg or psycopg (v3). For new projects consider migrating to psycopg (v3) which has both sync and async.

Warnings

Install

Imports

Quickstart

Minimal psycopg2 connection with RealDictCursor and parameterized query.

# Development: pip install psycopg2-binary
# Production: pip install psycopg2 (requires libpq-dev)
import psycopg2
import psycopg2.extras

conn = psycopg2.connect(
    host='localhost',
    dbname='mydb',
    user='myuser',
    password='mypassword'
)

with conn:
    with conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) as cur:
        # Parameterized query — always use %s
        cur.execute(
            'SELECT * FROM users WHERE active = %s',
            (True,)  # note: tuple, not single value
        )
        users = cur.fetchall()
        for user in users:
            print(user['name'])

conn.close()

view raw JSON →