Es sind einige Treiber verfügbar, aber Sie sollten nur diejenigen berücksichtigen, die die Datenbank- / SQL- API als implementieren
- es bietet eine saubere und effiziente Syntax,
- Es stellt sicher, dass Sie den Treiber später ändern können, ohne Ihren Code zu ändern, abgesehen von Import und Verbindung.
Für MySQL stehen zwei schnelle und zuverlässige Treiber zur Verfügung:
Ich habe beide in der Produktion verwendet, Programme laufen seit Monaten mit Verbindungsnummern in Millionenhöhe ohne Fehler.
Andere SQL-Datenbanktreiber sind im Go-Wiki aufgeführt .
Importieren bei Verwendung von MyMySQL:
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Import mit Go-MySQL-Treiber:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Verbinden und Schließen 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 Schließen mit dem Go-MySQL-Treiber:
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 hatte nie ein Problem, meine Server laufen monatelang ohne Fehler oder Undichtigkeiten. 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 ausführt, und die Zeile, die die Verbindung öffnet.
SomeThing
. Der Punkt dieser Zeile soll zeigen, wie eine Struktur ohne Zwischenvariablen direkt mit dem Ergebnis Ihrer Abfrage gefüllt wird.Einige Dinge, die Sie im Beispiel einer ausgewählten Zeile beachten sollten:
row.Next()
In diesem Beispiel fehlt ein. Es muss aufgerufen werdenrow.Next()
, um die erste zurückgegebene Zeile abzurufen.Es gibt auch eine gewisse Inflexibilität in der Bibliothek, die auf irgendeine Weise versucht, den Datenminimalismus zu fördern. Wenn Sie versuchen, Spalten auszuwählen, die nicht gescannt sind, werden Fehler ausgegeben (nicht nur Warnungen).
quelle