sqlx: escaneo de structs y consultas con nombre
Get, Select y NamedExec con sqlx
sqlx: escaneo de structs y consultas con nombre es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
¿Qué es sqlx?
github.com/jmoiron/sqlx amplía database/sql con escaneo en estructuras, consultas con nombre y vinculación dentro de la consulta. Su API es compatible con database/sql.
sqlx.Open
Abra una conexión a la base de datos mediante sqlx en lugar de sql:
db, err := sqlx.Open("postgres", dsn)
if err != nil { log.Fatal(err) }Get y Select
db.Get escanea una sola fila en una estructura; db.Select escanea varias filas en un 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)Etiquetas de estructuras
sqlx asigna las columnas a los campos de una estructura mediante la etiqueta db:
type User struct {
ID int `db:"id"`
Name string `db:"name"`
Email string `db:"email"`
}Consultas con nombre
Utilice parámetros con nombre mediante la sintaxis :name y pase una estructura o un mapa:
query := "INSERT INTO users (name, email) VALUES (:name, :email)"
_, err := db.NamedExecContext(ctx, query, user)sqlx.In
sqlx.In expande un slice en una cláusula 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) convierte los marcadores ? (utilizados por sqlx.In) al formato específico del controlador ($1, $2 para PostgreSQL):
StructScan
Escanee una fila individual en una estructura mediante rows.StructScan:
rows, _ := db.QueryxContext(ctx, "SELECT * FROM users")
for rows.Next() {
var u User
rows.StructScan(&u)
}MustExec
db.MustExec ejecuta una consulta y provoca un panic si se produce un error; resulta útil para migraciones de esquemas o configuraciones de pruebas en las que los errores siempre son fatales.
db.MustExec(schema)Unsafe
db.Unsafe() devuelve una versión que ignora silenciosamente las columnas no asignadas en lugar de devolver un error; resulta útil cuando el SELECT devuelve más columnas de las que tiene la estructura.
sqlx frente a un ORM
sqlx le proporciona control total sobre SQL y vinculación de estructuras nativa de Go. Los ORM como GORM ocultan SQL, pero pueden generar consultas inesperadas. Utilice sqlx cuando quiera SQL explícito con un escaneo práctico.
Comprobación rápida
¿Qué hace db.SelectContext en sqlx?
Recapitulación: sqlx
Puntos clave:
- Get/Select escanean directamente en estructuras mediante etiquetas db
- Consultas con nombre mediante la sintaxis :name y NamedExecContext
- sqlx.In + Rebind para cláusulas IN con slices
- StructScan para escanear cada fila en estructuras dentro de bucles
Preguntas frecuentes
¿La lección «sqlx: escaneo de structs y consultas con nombre» es gratis?
Sí — el texto completo de «sqlx: escaneo de structs y consultas con nombre» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «sqlx: escaneo de structs y consultas con nombre»?
Get, Select y NamedExec con sqlx Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «sqlx: escaneo de structs y consultas con nombre»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- database/sql y drivers
- sqlx: escaneo de structs y consultas con nombre
- pgx: driver de PostgreSQL de alto rendimiento
- Transacciones y migraciones