Psycopg2: el driver PostgreSQL para Python

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Psycopg2: Guía completa para trabajar con PostgreSQL en Python

Introducción

PostgreSQL es un potente sistema de gestión de bases de datos relacionales de código abierto, reconocido por su fiabilidad, escalabilidad y soporte para tipos de datos complejos. Para trabajar con PostgreSQL desde Python, la herramienta más popular y confiable es Psycopg2, el driver síncrono oficial que ofrece una solución estable y de alto rendimiento para conectar a la base de datos, ejecutar consultas SQL, gestionar transacciones e integrarse con frameworks web.

Psycopg2 es el estándar de facto para trabajar con PostgreSQL en proyectos Python gracias a su madurez, funcionalidad completa y el activo soporte de la comunidad de desarrolladores.

¿Qué es Psycopg2?

Psycopg2 es un adaptador de Python para PostgreSQL, escrito en C y basado en libpq (la biblioteca cliente oficial de PostgreSQL). La biblioteca cumple totalmente con la especificación DB-API 2.0 y ofrece muchas funcionalidades adicionales específicas de PostgreSQL.

Características principales de Psycopg2:

  • Alto rendimiento: Gracias a su implementación en C y la interacción optimizada con libpq
  • Seguridad: Protección integrada contra inyecciones SQL mediante consultas parametrizadas
  • Soporte de transacciones: Control total sobre las transacciones con gestión automática opcional
  • Compatibilidad de tipos de datos: Conversión automática entre tipos de PostgreSQL y Python
  • Soporte de extensiones: Trabajo con JSON, UUID, arrays, hstore y otros tipos de datos de PostgreSQL
  • Seguridad en hilos: Posibilidad de uso en aplicaciones multihilo

Instalación y configuración

Instalación de la biblioteca

pip install psycopg2-binary

Para entornos de producción, se recomienda usar la versión completa:

pip install psycopg2

Requisitos del sistema

Antes de instalar, asegúrate de tener las dependencias necesarias en tu sistema:

Ubuntu/Debian:

sudo apt-get install libpq-dev python3-dev

CentOS/RHEL:

sudo yum install postgresql-devel python3-devel

macOS:

brew install postgresql

Conexión a la base de datos

Conexión básica

import psycopg2

# Conexión a PostgreSQL
conn = psycopg2.connect(
    dbname="mydb",
    user="postgres",
    password="password",
    host="localhost",
    port="5432"
)

# Creación del cursor
cur = conn.cursor()

Conexión mediante cadena de conexión

conn = psycopg2.connect("postgresql://user:password@localhost:5432/dbname")

Conexión con parámetros adicionales

conn = psycopg2.connect(
    dbname="mydb",
    user="postgres",
    password="password",
    host="localhost",
    port="5432",
    sslmode="require",
    connect_timeout=10,
    application_name="my_app"
)

Uso de administradores de contexto

import psycopg2
from contextlib import contextmanager

@contextmanager
def get_db_connection():
    conn = psycopg2.connect(
        dbname="mydb",
        user="postgres",
        password="password",
        host="localhost"
    )
    try:
        yield conn
    finally:
        conn.close()

# Uso
with get_db_connection() as conn:
    with conn.cursor() as cur:
        cur.execute("SELECT * FROM users")
        results = cur.fetchall()

Recommendations