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()