sqlx: scansione delle struct e query con nome
Get, Select e NamedExec con sqlx
sqlx: scansione delle struct e query con nome è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.
Che cos'è sqlx?
github.com/jmoiron/sqlx estende database/sql con l'analisi nelle struct, le query denominate e il binding all'interno delle query. È compatibile a livello di API con database/sql.
sqlx.Open
Apra una connessione al database utilizzando sqlx anziché sql:
db, err := sqlx.Open("postgres", dsn)
if err != nil { log.Fatal(err) }Get e Select
db.Get analizza una singola riga in una struct; db.Select analizza più righe in una 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)Tag delle struct
sqlx associa le colonne ai campi delle struct utilizzando il tag db:
type User struct {
ID int `db:"id"`
Name string `db:"name"`
Email string `db:"email"`
}Query denominate
Utilizzi parametri denominati con la sintassi :name e passi una struct o una map:
query := "INSERT INTO users (name, email) VALUES (:name, :email)"
_, err := db.NamedExecContext(ctx, query, user)sqlx.In
sqlx.In espande una slice in una clausola 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) converte i segnaposto ? (utilizzati da sqlx.In) nel formato specifico del driver ($1, $2 per PostgreSQL):
StructScan
Analizzi una singola riga in una struct utilizzando rows.StructScan:
rows, _ := db.QueryxContext(ctx, "SELECT * FROM users")
for rows.Next() {
var u User
rows.StructScan(&u)
}MustExec
db.MustExec esegue una query e genera un panic in caso di errore; è utile per le migrazioni dello schema o la configurazione dei test, quando gli errori sono sempre fatali.
db.MustExec(schema)Unsafe
db.Unsafe() restituisce una versione che ignora silenziosamente le colonne non associate invece di restituire un errore; è utile quando la SELECT restituisce più colonne dei campi presenti nella struct.
sqlx e ORM
sqlx offre il pieno controllo su SQL con il binding delle struct nativo di Go. Gli ORM come GORM nascondono SQL, ma possono generare query inattese. Utilizzi sqlx quando desidera SQL esplicito con un'analisi ergonomica.
Verifica rapida
Che cosa fa db.SelectContext in sqlx?
Riepilogo: sqlx
Punti chiave:
- Get/Select analizzano direttamente i risultati nelle struct utilizzando i tag db
- Query denominate con la sintassi :name e NamedExecContext
- sqlx.In + Rebind per le clausole IN con le slice
- StructScan per analizzare ogni riga in una struct all'interno dei cicli
Domande Frequenti
La lezione «sqlx: scansione delle struct e query con nome» è gratuita?
Sì — il testo completo di «sqlx: scansione delle struct e query con nome» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.
Cosa imparerò in «sqlx: scansione delle struct e query con nome»?
Get, Select e NamedExec con sqlx Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Go Academy?
Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «sqlx: scansione delle struct e query con nome»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Go Academy?
Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- database/sql e driver
- sqlx: scansione delle struct e query con nome
- pgx: driver PostgreSQL ad alte prestazioni
- Transazioni e migrazioni