> 백엔드 개발 > Golang > Go에서 데이터베이스 행을 맵으로 효율적으로 변환하려면 어떻게 해야 합니까?

Go에서 데이터베이스 행을 맵으로 효율적으로 변환하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-09 04:28:10
원래의
1054명이 탐색했습니다.

How Can I Efficiently Convert Database Rows to a Map in Go?

Go에서 데이터베이스 행을 맵으로 변환

Go에서는 데이터베이스 쿼리 결과를 맵 조각으로 변환하는 것이 어려울 수 있습니다. 그러나 이 제한을 극복하는 것은 가능합니다.

기존 접근 방식

기존 접근 방식에서는 요청된 열 수와 일치하는 특정 수의 매개 변수로 행을 검색하는 작업이 포함됩니다. . 이 방법은 비효율적이고 유연성이 떨어질 수 있습니다.

sqlx 사용

sqlx 라이브러리는 보다 효율적인 솔루션을 제공합니다. sqlx를 사용하면 행을 맵 조각으로 쉽게 변환할 수 있습니다. 다음 코드는 이 프로세스를 보여줍니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

package main

 

import (

    "context"

    "database/sql"

    "fmt"

 

    _ "github.com/lib/pq" // PostgreSQL driver

    "github.com/jmoiron/sqlx"

)

 

type Place struct {

    Telcode  int

    Name     string

    Country  string

    Continent string

    Province string

    Region   string

}

 

func main() {

    db, err := sql.Open("postgres", "user=postgres password=mypassword host=localhost port=5432 dbname=mydatabase sslmode=disable")

    if err != nil {

        fmt.Printf("Error connecting to database: %v", err)

        return

    }

 

    sqlxDB := sqlx.NewDb(db, "postgres")

 

    places := []map[string]interface{}{}

    err = sqlxDB.Select(&places, "SELECT * FROM place ORDER BY telcode ASC")

    if err != nil {

        fmt.Printf(err)

        return

    }

 

    fmt.Printf("Places: %v", places)

}

로그인 후 복사

이 예에서 장소는 지도의 조각이며, 여기서 각 지도는 데이터베이스 테이블의 행을 나타냅니다. 맵 키는 열 이름이고 맵 값은 해당 열 값입니다.

맵 구조 사용자 정의

다음에서 반환되는 맵의 구조를 사용자 정의할 수 있습니다. sqlx. 예를 들어 맵 조각을 앞서 정의한 Place 구조체와 같은 사용자 정의 구조체 조각으로 바꿀 수 있습니다. 이 접근 방식은 더 효율적이며 유형 어설션이 필요하지 않습니다.

특히 대규모 데이터 세트를 처리하는 경우 sqlx 접근 방식이 기존 데이터베이스/sql 접근 방식보다 더 효율적이라는 점을 기억하세요.

위 내용은 Go에서 데이터베이스 행을 맵으로 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿