0Pricing
Go Academy · Leçon

sqlx : analyse des structs et requêtes nommées

Get, Select et NamedExec avec sqlx

sqlx : analyse des structs et requêtes nommées est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Qu’est-ce que sqlx ?

github.com/jmoiron/sqlx étend database/sql avec l’analyse de structures, les requêtes nommées et la liaison des paramètres dans les requêtes. Il est compatible avec l’API de database/sql.

sqlx.Open

Ouvrez une connexion à la base de données avec sqlx plutôt qu’avec sql :

db, err := sqlx.Open("postgres", dsn)
if err != nil { log.Fatal(err) }

Get et Select

db.Get analyse une seule ligne dans une structure ; db.Select analyse plusieurs lignes dans une slice :

var user User
db.GetContext(ctx, &user, "SELECT * FROM users WHERE id=$1", id)

var users []User
db.SelectContext(ctx, &users, "SELECT * FROM users WHERE active=$1", true)

Balises de structure

sqlx associe les colonnes aux champs d’une structure à l’aide de la balise db :

type User struct {
    ID    int    `db:"id"`
    Name  string `db:"name"`
    Email string `db:"email"`
}

Requêtes nommées

Utilisez des paramètres nommés avec la syntaxe :name et transmettez une structure ou une map :

query := "INSERT INTO users (name, email) VALUES (:name, :email)"
_, err := db.NamedExecContext(ctx, query, user)

sqlx.In

sqlx.In développe une slice en clause SQL IN :

ids := []int{1, 2, 3}
query, args, _ := sqlx.In("SELECT * FROM users WHERE id IN (?)", ids)
query = db.Rebind(query)
db.SelectContext(ctx, &users, query, args...)

Rebind

db.Rebind(query) convertit les paramètres ? (utilisés par sqlx.In) au format propre au pilote ($1, $2 pour PostgreSQL) :

StructScan

Analysez une ligne individuelle dans une structure avec rows.StructScan :

rows, _ := db.QueryxContext(ctx, "SELECT * FROM users")
for rows.Next() {
    var u User
    rows.StructScan(&u)
}

MustExec

db.MustExec exécute une requête et provoque une panique en cas d’erreur : cette méthode est utile pour les migrations de schéma ou la configuration des tests, lorsque les erreurs sont toujours fatales.

db.MustExec(schema)

Unsafe

db.Unsafe() renvoie une version qui ignore silencieusement les colonnes non associées au lieu de renvoyer une erreur : cette méthode est utile lorsque le SELECT renvoie plus de colonnes que la structure ne possède de champs.

sqlx et ORM

sqlx vous donne un contrôle total sur SQL avec une liaison de structures native en Go. Les ORM comme GORM masquent SQL, mais peuvent générer des requêtes inattendues. Utilisez sqlx lorsque vous souhaitez écrire explicitement SQL tout en bénéficiant d’une analyse ergonomique.

Vérification rapide

Que fait db.SelectContext dans sqlx ?

Récapitulatif : sqlx

Points clés :

  • Get/Select analysent directement les structures à l’aide des balises db
  • Requêtes nommées avec la syntaxe :name et NamedExecContext
  • sqlx.In + Rebind pour une clause IN avec des slices
  • StructScan pour analyser chaque ligne dans une structure au sein de boucles

Questions Fréquemment Posées

La leçon « sqlx : analyse des structs et requêtes nommées » est-elle gratuite ?

Oui — le texte complet de « sqlx : analyse des structs et requêtes nommées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « sqlx : analyse des structs et requêtes nommées » ?

Get, Select et NamedExec avec sqlx Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « sqlx : analyse des structs et requêtes nommées » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. database/sql et pilotes
  2. sqlx : analyse des structs et requêtes nommées
  3. pgx : pilote PostgreSQL hautes performances
  4. Transactions et migrations
← Retour à Go Academy