Introducción a pgx: potente controlador PostgreSQL para Go
\n\nLa biblioteca pgx (PostgreSQL eXtended) es un controlador moderno y de alto rendimiento, así como un conjunto de herramientas para trabajar con PostgreSQL desde el lenguaje de programación Go. A diferencia del paquete estándar database/sql, pgx proporciona acceso directo al protocolo de PostgreSQL, lo que ofrece un aumento significativo en el rendimiento y acceso a capacidades únicas del SGBD, como LISTEN/NOTIFY, el protocolo COPY, trabajo con arreglos y tipos compuestos, y mucho más.
¿Por qué usar pgx en lugar del estándar database/sql? En primer lugar, pgx funciona entre un 30 y un 50 % más rápido gracias a la ausencia de abstracciones innecesarias. En segundo lugar, admite todas las capacidades modernas de PostgreSQL 12+ (y versiones más recientes). En tercer lugar, pgx proporciona una API rica para trabajar con conexiones, grupos de conexiones, consultas preparadas y transacciones. Finalmente, pgx es completamente compatible con database/sql a través de un adaptador especial, lo que permite usarlo en proyectos donde ya se utiliza la interfaz estándar.
Instalación de pgx
\n\nLa instalación de pgx en un proyecto Go se realiza con el comando estándar go get. Para trabajar con PostgreSQL, necesitará instalar el paquete principal de pgx y, posiblemente, módulos adicionales:
# Instalación del paquete principal pgx v5 (versión recomendada)\ngo get github.com/jackc/pgx/v5\n\n# Instalación del paquete para trabajar con grupos de conexiones\ngo get github.com/jackc/pgx/v5/pgxpool\n\n# Instalación del adaptador para compatibilidad con database/sql\ngo get github.com/jackc/pgx/v5/stdlib\n\nDespués de ejecutar estos comandos, podrá importar pgx en sus archivos Go. Asegúrese de tener instalado Go versión 1.18 o superior, ya que pgx v5 utiliza genéricos.
\n\nInicio rápido: primera conexión a PostgreSQL
\n\nEscribamos un programa simple que se conecte a una base de datos PostgreSQL y ejecute una consulta. Supongamos que tiene PostgreSQL ejecutándose en localhost:5432, la base de datos se llama testdb, el usuario testuser con contraseña testpass.
package main\n\nimport (\n "context"\n "fmt"\n "log"\n "os"\n\n "github.com/jackc/pgx/v5"\n)\n\nfunc main() {\n // Cadena de conexión\n connStr := "postgres://testuser:testpass@localhost:5432/testdb"\n\n // Establecer la conexión\n conn, err := pgx.Connect(context.Background(), connStr)\n if err != nil {\n log.Fatalf("No se pudo conectar a la BD: %v", err)\n }\n defer conn.Close(context.Background())\n\n // Ejecutar una consulta simple\n var greeting string\n err = conn.QueryRow(context.Background(), "SELECT '¡Hola, PostgreSQL!'").Scan(&greeting)\n if err != nil {\n log.Fatalf("Error al ejecutar la consulta: %v", err)\n }\n\n fmt.Println(greeting)\n}\n\nEste código establece una conexión, ejecuta una consulta y muestra el resultado. Observe el uso de context.Background() — esta es la forma estándar de pasar contexto en Go, que permite controlar tiempos de espera y cancelación de operaciones.
Métodos y funciones principales de pgx
\n\nVeamos los métodos y funciones más importantes de la biblioteca pgx. Para cada método, proporcionaremos una descripción, parámetros y un ejemplo de código funcional.
\n\n1. pgx.Connect — establecer conexión
\nQué hace: Crea una nueva conexión a PostgreSQL. Esta es la forma principal de empezar a trabajar con la base de datos.
\nParámetros:
\n- \n
ctx context.Context— contexto para gestionar el ciclo de vida de la conexión \n connString string— cadena de conexión en formato URI o DSN \n
Retorna: (*pgx.Conn, error)
Ejemplo:
\nconn, err := pgx.Connect(context.Background(), "postgres://user:pass@localhost:5432/mydb")\nif err != nil {\n log. También en la biblioteca
Aprendizaje automático en JavaScript: bibliotecas para Node.js — revisión y ejemplos
Trabajo con imágenes en Rust: revisión de las bibliotecas image, fast_image_resize y otras
Pruebas en Go (Golang): frameworks y herramientas
Criptografía en Node.js: cifrado y hash con crypto