Go에서 sqlx 사용
5623 단어 Go
Go 데이터베이스 라이브러리 qlx
Go에서 데이터베이스 연결에 사용되는 표준 패키지 데이터베이스/sql에서 확장 기능을 제공하는 라이브러리입니다.
DB에서 끌어낸 데이터를 구조체, 지도, 절편에 적용한다.
뭐가 좋을까?
일반적인 상황에서 데이터베이스에서 끌어낸 데이터는 반드시 열에 따라 하나씩 스캔(유형 변환)해야 하지만 마음대로 진행할 수 있기 때문에 코드 기술량을 줄일 수 있다.열수가 많은 기록을 모두 끌어올 때 매우 편리하다.
그 외에 다른 용도가 있을지도 모르지만, 이제 알겠다.
사용 방법
안 쓰면 알 수 없을 것 같아서 구체적인 예로 살펴보겠습니다.
이번에는 Mysql에서 미리 준비한 id,name,age열을 포함하는 간단한 데이터베이스에 연결하려고 합니다.사전에 두 개의 기록을 삽입하였다.
우선 goget 라이브러리입니다.
https://github.com/jmoiron/sqlx
go get github.com/jmoiron/sqlx
다음은 끌어온 데이터를 구조체에 적용하는 가장 간단한 코드 기술예이다.package main
import (
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
)
//引っ張ってきたデータを当てはめる構造体を用意。
//その際、バッククオート(`)で、どのカラムと紐づけるのかを明示する。
type User struct {
ID int `db:"id"`
Name string `db:"name"`
Age int `db:"age"`
}
type Userlist []User
func main() {
//Userデータ一件一件を格納する配列Userlistを、Userlist型で用意
var userlist Userlist
//Mysqlに接続。sql.Openの代わりにsqlx.Openを使う。
//ドライバ名、データソース名を引数に渡す
db, err := sqlx.Open("mysql", "root@/gosample")
if err != nil {
log.Fatal(err)
}
//SELECTを実行。db.Queryの代わりにdb.Queryxを使う。
rows, err := db.Queryx("SELECT * FROM users")
if err != nil {
log.Fatal(err)
}
var user User
for rows.Next() {
//rows.Scanの代わりにrows.StructScanを使う
err := rows.StructScan(&user)
if err != nil {
log.Fatal(err)
}
userlist = append(userlist, user)
}
fmt.Println(userlist)
//[{1 yamada 25} {2 suzuki 28}]
}
일반적인 ql 패키지라면rows.이어서 "&user.ID, $user.Name..."등등, 열의 매개 변수만 써야 하지만 sqlx를 사용하면 일치하는 구조체의 구성을 볼 수 있기 때문에 여기서'&user'만 쓰면 됩니다.이번에는 3개의 열밖에 없기 때문에 모두 쓰는 것도 어렵지 않지만 열수가 많은 기록은 매우 편리하다.
참고 자료
공식.
https://github.com/jmoiron/sqlx
http://jmoiron.github.io/sqlx/
Reference
이 문제에 관하여(Go에서 sqlx 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rihofujino/items/b69e6a23e7cef1d692c4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)