sqlx pour Go : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à sqlx : une extension puissante de database/sql pour Go

\n\n

La bibliothèque sqlx est une extension populaire du package standard database/sql en langage Go. Elle ne remplace pas le pilote standard, mais se superpose à lui, ajoutant des fonctions pratiques pour travailler avec les bases de données. Si vous avez déjà écrit en Go et rencontré la nécessité de scanner manuellement les lignes de résultat d'une requête dans des structures, sqlx vous semblera un véritable salut.

\n\n

L'objectif principal de sqlx est de simplifier et accélérer le développement, en libérant le développeur du code standard. La bibliothèque permet :

\n
    \n
  • Mapper automatiquement les résultats des requêtes SQL dans des structures Go.
  • \n
  • Travailler avec des paramètres nommés dans les requêtes.
  • \n
  • Effectuer des insertions en masse (batch insert).
  • \n
  • Utiliser des méthodes pratiques pour travailler avec les prepared statements.
  • \n
  • S'intégrer avec tous les pilotes compatibles avec database/sql (PostgreSQL, MySQL, SQLite, etc.).
  • \n
\n\n

Sur le site PythonLib.ru, nous parlons souvent d'outils utiles pour les développeurs. Aujourd'hui, nous allons détailler sqlx — une bibliothèque incontournable pour tout développeur Go travaillant avec des bases de données.

\n\n

Installation de sqlx

\n\n

L'installation de sqlx dans un projet Go se fait de manière standard via le gestionnaire de paquets go get :

\n\n
go get github.com/jmoiron/sqlx
\n\n

Vous devrez également installer le pilote pour votre base de données spécifique. Par exemple, pour PostgreSQL :

\n\n
go get github.com/lib/pq
\n\n

Pour MySQL :

\n\n
go get github.com/go-sql-driver/mysql
\n\n

Pour SQLite :

\n\n
go get github.com/mattn/go-sqlite3
\n\n

Après l'installation, vous pouvez importer la bibliothèque dans votre code :

\n\n
import (\n    "github.com/jmoiron/sqlx"\n    _ "github.com/lib/pq" // pilote PostgreSQL\n)
\n\n

Démarrage rapide : premier exemple avec sqlx

\n\n

Écrivons un programme simple qui se connecte à une base de données PostgreSQL, crée une table, insère quelques enregistrements et les affiche à l'écran.

\n\n
package main\n\nimport (\n    "fmt"\n    "log"\n    "github.com/jmoiron/sqlx"\n    _ "github.com/lib/pq"\n)\n\ntype User struct {\n    ID   int    `db:"id"`\n    Name string `db:"name"`\n    Age  int    `db:"age"`\n}\n\nfunc main() {\n    // Connexion à la base de données\n    db, err := sqlx.Connect("postgres", "user=postgres dbname=testdb sslmode=disable")\n    if err != nil {\n        log.Fatalln(err)\n    }\n    defer db.Close()\n\n    // Création de la table\n    schema := `CREATE TABLE IF NOT EXISTS users (\n        id SERIAL PRIMARY KEY,\n        name VARCHAR(100) NOT NULL,\n        age INTEGER NOT NULL\n    );`\n    db.MustExec(schema)\n\n    // Insertion de données\n    db.MustExec("INSERT INTO users (name, age) VALUES ($1, $2)", "Alice", 30)\n    db.MustExec("INSERT INTO users (name, age) VALUES ($1, $2)", "Bob", 25)\n\n    // Sélection de données\n    var users []User\n    err = db.Select(&users, "SELECT id, name, age FROM users")\n    if err != nil {\n        log.Fatalln(err)\n    }\n\n    fmt.Printf("Users: %+v\\n", users)\n}
\n\n

Dans cet exemple, nous voyons les fonctionnalités clés de sqlx : le mappage automatique des champs de structure (grâce aux tags db), la méthode Select pour la sélection de plusieurs lignes, et MustExec pour exécuter des requêtes sans gestion d'erreurs (pratique pour le prototypage).

\n\n

Méthodes et fonctions principales de sqlx

\n\n

Examinons les 10 méthodes clés de la bibliothèque sqlx avec une description détaillée et des exemples.

\n\n

1. sqlx.Connect

\n

Ce qu'elle fait : Établit une connexion à la base de données et la vérifie (effectue un ping). C'est le moyen le plus pratique de se connecter.

\n

Paramètres :

\n
    \n
  • driverName (string) — nom du pilote (par exemple, "postgre

Recommendations