0Pricing
Go Academy · 강의

sqlx: 구조체 스캔과 명명된 쿼리

sqlx의 Get, Select 및 NamedExec

sqlx: 구조체 스캔과 명명된 쿼리은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

sqlx란 무엇입니까?

github.com/jmoiron/sqlx는 구조체 스캔, 이름이 지정된 조회, 조회 내부 바인딩 기능으로 database/sql을 확장합니다. database/sql과 API 호환성이 있습니다.

sqlx.Open

sql 대신 sqlx를 사용해 데이터베이스 연결을 엽니다:

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

Get과 Select

db.Get은 단일 행을 구조체로 스캔하고, db.Select는 여러 행을 슬라이스로 스캔합니다:

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)

구조체 태그

sqlx는 db 태그를 사용해 열을 구조체 필드에 매핑합니다:

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

이름이 지정된 조회

:name 구문으로 이름이 지정된 매개변수를 사용하고 구조체나 맵을 전달합니다:

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

sqlx.In

sqlx.In은 슬라이스를 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)는 ? 플레이스홀더(sqlx.In에서 사용)를 드라이버별 형식(PostgreSQL의 경우 $1, $2)으로 변환합니다:

StructScan

rows.StructScan을 사용해 개별 행을 구조체로 스캔합니다:

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

MustExec

db.MustExec는 조회를 실행하고 오류가 발생하면 패닉을 일으킵니다. 오류가 항상 치명적인 스키마 마이그레이션이나 테스트 설정에 유용합니다.

db.MustExec(schema)

Unsafe

db.Unsafe()는 오류를 반환하는 대신 매핑되지 않은 열을 조용히 무시하는 버전을 반환합니다. SELECT가 구조체의 필드 수보다 많은 열을 반환할 때 유용합니다.

sqlx와 ORM

sqlx는 Go 네이티브 구조체 바인딩과 함께 SQL을 완전히 제어할 수 있게 합니다. GORM 같은 ORM은 SQL을 숨기지만 예상하지 못한 조회를 생성할 수 있습니다. 명시적인 SQL과 편리한 스캔 기능이 필요할 때 sqlx를 사용합니다.

빠른 확인

sqlx에서 db.SelectContext는 무엇을 수행합니까?

복습: sqlx

핵심 내용:

  • Get/Select는 db 태그를 사용해 구조체로 직접 스캔합니다
  • :name 구문과 NamedExecContext를 사용해 이름이 지정된 조회를 작성합니다
  • 슬라이스를 사용하는 IN 절에는 sqlx.In + Rebind를 사용합니다
  • 반복문에서 행별 구조체 스캔에는 StructScan을 사용합니다

자주 묻는 질문

“sqlx: 구조체 스캔과 명명된 쿼리” 강의는 무료인가요?

네 — “sqlx: 구조체 스캔과 명명된 쿼리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“sqlx: 구조체 스캔과 명명된 쿼리”에서 뭘 배우나요?

sqlx의 Get, Select 및 NamedExec 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Go Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“sqlx: 구조체 스캔과 명명된 쿼리” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. database/sql과 드라이버
  2. sqlx: 구조체 스캔과 명명된 쿼리
  3. pgx: 고성능 PostgreSQL 드라이버
  4. 트랜잭션과 마이그레이션
← Go Academy(으)로 돌아가기