Introduction à pgx : un driver PostgreSQL puissant pour Go
La bibliothèque pgx (PostgreSQL eXtended) est un driver moderne et haute performance, ainsi qu'un ensemble d'outils pour interagir avec PostgreSQL depuis le langage de programmation Go. Contrairement au package standard database/sql, pgx offre un accès direct au protocole PostgreSQL, ce qui permet un gain de performance significatif et l'accès à des fonctionnalités uniques du SGBD telles que LISTEN/NOTIFY, le protocole COPY, la gestion des tableaux et des types composites, et bien plus encore.
Pourquoi utiliser pgx plutôt que le database/sql standard ? Premièrement, pgx est 30 à 50 % plus rapide grâce à l'absence d'abstractions superflues. Deuxièmement, il prend en charge toutes les fonctionnalités modernes de PostgreSQL 12+ (et versions ultérieures). Troisièmement, pgx fournit une API riche pour la gestion des connexions, des pools de connexions, des requêtes préparées et des transactions. Enfin, pgx est entièrement compatible avec database/sql via un adaptateur dédié, ce qui permet de l'utiliser dans des projets utilisant déjà l'interface standard.
Installation de pgx
L'installation de pgx dans un projet Go s'effectue avec la commande standard go get. Pour travailler avec PostgreSQL, vous devrez installer le package principal pgx et éventuellement des modules supplémentaires :
# Installation du package principal pgx v5 (version recommandée)
go get github.com/jackc/pgx/v5
# Installation du package pour la gestion du pool de connexions
go get github.com/jackc/pgx/v5/pgxpool
# Installation de l'adaptateur pour la compatibilité avec database/sql
go get github.com/jackc/pgx/v5/stdlib
Après avoir exécuté ces commandes, vous pourrez importer pgx dans vos fichiers Go. Assurez-vous d'avoir installé Go version 1.18 ou supérieure, car pgx v5 utilise les génériques.
Démarrage rapide : première connexion à PostgreSQL
Écrivons un programme simple qui se connecte à une base de données PostgreSQL et exécute une requête. Supposons que PostgreSQL soit lancé sur localhost:5432, que la base de données s'appelle testdb, l'utilisateur testuser avec le mot de passe testpass.
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/jackc/pgx/v5"
)
func main() {
// Chaîne de connexion
connStr := "postgres://testuser:testpass@localhost:5432/testdb"
// Établir la connexion
conn, err := pgx.Connect(context.Background(), connStr)
if err != nil {
log.Fatalf("Impossible de se connecter à la base de données : %v", err)
}
defer conn.Close(context.Background())
// Exécuter une requête simple
var greeting string
err = conn.QueryRow(context.Background(), "SELECT 'Bonjour, PostgreSQL!'").Scan(&greeting)
if err != nil {
log.Fatalf("Erreur lors de l'exécution de la requête : %v", err)
}
fmt.Println(greeting)
}
Ce code établit une connexion, exécute une requête et affiche le résultat. Notez l'utilisation de context.Background() — c'est la méthode standard pour passer un contexte en Go, permettant de contrôler les timeouts et l'annulation des opérations.
Méthodes et fonctions principales de pgx
Examinons les méthodes et fonctions les plus importantes de la bibliothèque pgx. Pour chaque méthode, nous fournissons une description, les paramètres et un exemple de code fonctionnel.
1. pgx.Connect — établir une connexion
Fonction : Crée une nouvelle connexion à PostgreSQL. C'est la méthode principale pour commencer à travailler avec la base de données.
Paramètres :
ctx context.Context— contexte pour gérer la durée de vie de la connexionconnString string— chaîne de connexion au format URI ou DSN
Retourne : (*pgx.Conn, error)
Exemple :
conn, err := pgx.Connect(context.Background(), "postgres://user:pass@localhost:5432/mydb")
if err != nil {
log.Fatal(err)
}
defer conn.Close(context.Background())
2. c
Aussi dans la bibliothèque
Travailler avec XML en C# (.NET) : Guide complet
Traitement d'images en Node.js : bibliothèques Sharp, Jimp et gm
Traitement d'images en Java : bibliothèques et exemples de code
Files d'attente de tâches en Rust : Aperçu des bibliothèques pour le traitement asynchrone