programing

Go에서 MySQL에 연결하는 권장 방법은 무엇입니까?

nicescript 2023. 2. 2. 21:44
반응형

Go에서 MySQL에 연결하는 권장 방법은 무엇입니까?

Go에서 MySQL 데이터베이스에 연결할 수 있는 신뢰할 수 있는 솔루션을 찾고 있습니다.주변에서 몇 가지 라이브러리를 본 적은 있지만, 완전성과 현재 유지보수의 다른 상태를 판단하기는 어렵습니다.복잡한 요구는 없지만 MySQL에 연결하기 위해 어떤 사람들이 사용하고 있는지 또는 가장 표준적인 솔루션을 알고 싶습니다.

몇 가지 드라이버를 사용할 수 있지만 데이터베이스/sql API를 구현하는 드라이버는

  • 깨끗하고 효율적인 구문을 제공합니다.
  • Import와 접속은 별도로 코드를 변경하지 않고 나중에 드라이버를 변경할 수 있습니다.

MySQL 에서는, 다음의 2개의 고속·신뢰성이 높은 드라이버를 사용할 수 있습니다.

이 두 가지를 모두 실전 가동에 사용하고 있습니다.수개월 동안 수백만 개의 접속 번호로 프로그램이 가동되고 있습니다.

다른 SQL 데이터베이스 드라이버는 go-wiki에 나열됩니다.

MyMySQL 사용 시 가져오기:

import (
    "database/sql"
    _ "github.com/ziutek/mymysql/godrv"
)

Go-MySQL-Driver 사용 시 가져오기:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

MyMySQL을 사용한 연결 및 닫기:

con, err := sql.Open("mymysql", database+"/"+user+"/"+password)
defer con.Close()
// here you can use the connection, it will be closed when function returns

Go-MySQL-Driver를 사용한 연결 및 닫기:

con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()

하나의 행을 선택합니다.

row := con.QueryRow("select mdpr, x, y, z from sometable where id=?", id)
cb := new(SomeThing)
err := row.Scan(&cb.Mdpr, &cb.X, &cb.Y, &cb.Z)

여러 행을 선택하고 결과를 포함하는 어레이를 구축합니다.

rows, err := con.Query("select a, b from item where p1=? and p2=?", p1, p2)
if err != nil { /* error handling */}
items := make([]*SomeStruct, 0, 10)
var ida, idb uint
for rows.Next() {
    err = rows.Scan(&ida, &idb)
    if err != nil { /* error handling */}
    items = append(items, &SomeStruct{ida, idb})
}

삽입:

_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)

Go with MySQL에서 작업하는 것은 즐거운 경험입니다.저는 문제가 없었습니다.서버는 몇 달 동안 오류나 누수 없이 가동되고 있습니다.대부분의 함수가 단순히 가변적인 수의 인수를 사용한다는 사실은 많은 언어에서 지루한 작업을 가볍게 합니다.

나중에 다른 MySQL 드라이버를 사용해야 할 경우 한 번에 Import를 수행하는 줄과 연결을 여는 줄의 두 줄을 변경하기만 하면 됩니다.

주의할 점이 몇 가지 있습니다.1 행의 예를 선택합니다.

row := con.QueryRow("select mdpr, x, y, z from sometable where id=?",id) 
cb := new(SomeThing) 
err := row.Scan(&cb.Mdpr, &cb.X, &cb.Y, &cb.Z)

행방불명이 되다row.Next()를 참조해 주세요.전화할 필요가 있다.row.Next()첫 번째 줄을 잡습니다.

또한 어떤 식으로든 데이터 미니멀리즘을 촉진하려는 도서관에는 다소 융통성이 없다.스캔이 아닌 열을 선택하려고 하면 오류가 발생합니다(경고뿐 아니라).

Gorm은 Mysql이나 Postgre에 접속하는 완벽한 방법이라고 생각합니다.SQL.

언급URL : https://stackoverflow.com/questions/11353679/whats-the-recommended-way-to-connect-to-mysql-from-go

반응형