Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist der empfohlene Weg, um von Go aus eine Verbindung zu MySQL herzustellen?

Einige wenige Treiber sind verfügbar, aber Sie sollten nur diejenigen berücksichtigen, die database/sql implementieren API als

  • es bietet eine saubere und effiziente Syntax,
  • Es stellt sicher, dass Sie später den Treiber ändern können, ohne Ihren Code zu ändern, abgesehen vom Import und der Verbindung.

Für MySQL sind zwei schnelle und zuverlässige Treiber verfügbar:

Ich habe beide in der Produktion eingesetzt, Programme laufen seit Monaten mit millionenfachen Verbindungszahlen störungsfrei.

Andere SQL-Datenbanktreiber sind auf go-wiki aufgeführt .

Import bei Verwendung von MySQL:

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

Import bei Verwendung des Go-MySQL-Treibers :

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

Verbinden und Beenden mit 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

Verbinden und Beenden mit Go-MySQL-Driver :

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

Wählen Sie eine Zeile aus:

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)

Wählen Sie mehrere Zeilen aus und erstellen Sie ein Array mit Ergebnissen:

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})
}

Einfügen:

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

Sie werden sehen, dass die Arbeit in Go mit MySQL eine wunderbare Erfahrung ist:Ich nie hatte ein Problem, meine Server laufen seit Monaten ohne Fehler oder Leaks. Die Tatsache, dass die meisten Funktionen einfach eine variable Anzahl von Argumenten annehmen, erleichtert eine Aufgabe, die in vielen Sprachen mühsam ist.

Beachten Sie, dass Sie, wenn Sie in Zukunft einen anderen MySQL-Treiber verwenden müssen, nur zwei Zeilen in einer Go-Datei ändern müssen:die Zeile, die den Import durchführt, und die Zeile, die die Verbindung öffnet.