psycopg2

The most popular PostgreSQL database adapter for Python, implementing the full DB API 2.0 specification.

Library
PyPI
v2.9.13
3,657 stars
LGPL-3.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
70 /100 Good
Development Activity 68
Maintenance 32
Community 80
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
66 /100 Good
Architecture 75
Code Quality 80
Innovation 55
Learning Curve 55

psycopg2 is a PostgreSQL database adapter for Python, implemented mostly in C as a direct wrapper around libpq for efficiency and stability. It provides a complete implementation of the Python DB API 2.0 specification, along with thread safety that lets multiple threads share the same connection — a design aimed squarely at heavily multi-threaded applications that create and destroy large numbers of cursors and issue many concurrent INSERTs or UPDATEs.

Beyond the core DB API surface, psycopg2 adds PostgreSQL-specific extensions: client-side and server-side (named) cursors, asynchronous communication and LISTEN/NOTIFY support, native COPY TO/COPY FROM for fast bulk data transfer, and a flexible, extensible object-adaptation system for mapping Python types to PostgreSQL types and back. It underpins a large share of the Python-PostgreSQL ecosystem, including as the default driver behind Django’s ORM and a common companion to SQLAlchemy. The project is stable and still actively maintained, though its own documentation notes it is not expected to receive new features, with Psycopg 3 positioned as where new development happens.

What You Get

  • DB API 2.0 compliant connection and cursor objects with the standard exception hierarchy (Error, DataError, IntegrityError, OperationalError, etc.)
  • Thread-safe connections that can be shared across multiple threads for heavily concurrent workloads
  • Client-side and server-side (named) cursors, including support for streaming large result sets
  • Native COPY TO/COPY FROM support for fast bulk import and export of data
  • Asynchronous execution and PostgreSQL LISTEN/NOTIFY support for event-driven applications
  • A connection pool implementation (psycopg2.pool) and an extensible type-adaptation system for custom Python-to-PostgreSQL type mapping

Common Use Cases

  • Backend database access for Python web frameworks (Django’s ORM, SQLAlchemy, Flask apps) talking to PostgreSQL
  • High-concurrency services that spawn many threads to run concurrent INSERTs/UPDATEs against a shared connection
  • Bulk ETL and data-pipeline jobs that use COPY FROM/COPY TO to move data quickly between files and PostgreSQL tables
  • Realtime, event-driven applications that use PostgreSQL LISTEN/NOTIFY for pub/sub-style updates

Under The Hood

Architecture

psycopg2 is a hybrid C/Python library: the core C extension module (built from the files in psycopg/, e.g. connection_type.c, cursor_type.c, and the adapter_*.c files) implements connection, cursor, and type-adaptation machinery directly against libpq, while the pure-Python layer in lib/ (__init__.py, extensions.py, extras.py, pool.py, sql.py, errors.py) re-exports the C primitives, registers default type adapters, and layers DB API 2.0 ergonomics — connect(), register_adapter, connection pooling — on top. This thin-Python/thick-C split puts the wire protocol and object lifecycle in C while Python owns the public API surface, exception hierarchy, and pluggable adaptation registry, meaning changes to the core adapter/typecast abstraction ripple across both language boundaries.

Tech Stack

Built with setuptools/distutils and compiled as a CPython extension against libpq, PostgreSQL’s C client library, with no external Python runtime dependencies beyond the standard library. It supports a wide span of Python versions (3.9 through 3.14) across Linux, macOS, and Windows, with packaging spanning C, Python, Makefile, and shell script. There is no bundled web framework or ORM — psycopg2 sits underneath tools like Django and SQLAlchemy as the driver layer.

Code Quality

The test suite is extensive, including a full DB API 2.0 compliance suite alongside dozens of focused test modules covering connections, cursors, COPY, async operations, notifications, replication, and type handling, all run against real PostgreSQL instances in CI rather than mocks. Error handling follows the DB API 2.0 typed exception hierarchy surfaced from the C layer, giving callers structured, catchable failure modes. CI exercises a broad matrix of Python and PostgreSQL version combinations on every push and pull request. The Python layer has no visible type annotations or static-analysis tooling in CI, which is the main gap relative to a fully modern codebase.

What Makes It Unique

psycopg2’s differentiation is being a C-level libpq wrapper purpose-built for heavily multi-threaded, cursor-churning workloads: thread-safe connection sharing, an extensible C-level type-adaptation system, and native COPY and LISTEN/NOTIFY support that many pure-Python drivers only bolt on later. It deliberately implements the DB API 2.0 contract precisely rather than reinventing it, so its edge is performance and protocol completeness rather than novel API design — the project itself is now positioned as stable and feature-frozen, with new development directed toward Psycopg 3.

Used by 42 apps in this directory

Python
58%
Apache 2.0

MLflow

AI Development · Monitoring

28,512

The open source AI engineering platform for debugging, evaluating, monitoring, and optimizing production LLMs and agents at scale.

View details
96
Repo Health
86
Technical
67
Dependency
Built with
Python 58%
TypeScript 35%
Updated 6 days ago
Python
66%
Other

Morphik

AI Development · Databases · Search

3,717

Morphik is an AI-native ingestion and retrieval engine that lets developers store, search, and reason over visually rich documents — scanned PDFs, manuals, slides, and video — without duct-taping together OCR, an embedding model, and a vector database.

View details
64
Repo Health
71
Technical
67
Dependency
Built with
Python 66%
TypeScript 23%
Updated 1 weeks ago
Python
52%
Other

Odoo

CRM · ERP · Productivity

55,289

The open source ERP platform that integrates CRM, accounting, inventory, manufacturing, and 60+ business apps into one seamlessly connected suite.

View details
87
Repo Health
82
Technical
64
Dependency
Built with
Python 52%
JavaScript 43%
Updated 6 days ago
TypeScript
26%
AGPL 3.0

Omnivore

Bookmarks Archiving · Knowledge Management · Note Taking

16,356

Self-hosted read-it-later platform with highlights, newsletters, PDFs, and seamless Obsidian and Logseq integration.

View details
90
Repo Health
74
Technical
65
Dependency
Built with
TypeScript 26%
JavaScript 24%
HTML 20%
Updated 1 weeks ago
Python
38%
Other

Open WebUI

AI Agents · AI Assistants

156,607

The extensible, privacy-first AI platform that runs Ollama, OpenAI, and any LLM backend behind a polished, feature-packed web interface.

View details
92
Repo Health
75
Technical
66
Dependency
Built with
Python 38%
Svelte 35%
JavaScript 19%
Updated 6 days ago
TypeScript
92%
Other

OpenHands

AI Code Assistants · AI Development

91,695

The self-hosted developer control center for running AI coding agents — locally, in Docker, on VMs, or across cloud backends — with automation workflows for GitHub, Slack, and more.

View details
91
Repo Health
82
Technical
67
Dependency
Built with
TypeScript 92%
Updated 1 weeks ago
TypeScript
39%
AGPL 3.0

OpenObserve

Analytics · Devops · Monitoring

22,475

Open source observability platform for logs, metrics, traces, and real user monitoring — delivering 140x lower storage costs than Elasticsearch with a single binary you can run in under 2 minutes.

View details
90
Repo Health
9
Technical
68
Dependency
Built with
TypeScript 39%
Rust 30%
Vue 17%
Updated 6 days ago
TypeScript
54%
Other

OpenReplay

Analytics

13,042

Self-hosted session replay and product analytics suite that lets you see exactly what users do on your web app — without sending data to third parties.

View details
91
Repo Health
77
Technical
66
Dependency
Built with
TypeScript 54%
Go 13%
Updated 1 weeks ago
Python
73%
AGPL 3.0

OpenViking

AI Development · AI Memory · Databases

40,705

An open-source context database that gives AI agents a unified filesystem for memory, resources, and skills with hierarchical tiered retrieval.

View details
85
Repo Health
75
Technical
64
Dependency
Built with
Python 73%
TypeScript 12%
Rust 11%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers