Quelques pilotes sont disponibles, mais vous ne devez considérer que ceux qui implémentent l' API database / sql comme
- il fournit une syntaxe propre et efficace,
- cela garantit que vous pourrez plus tard changer le pilote sans changer votre code, à part l'importation et la connexion.
Deux pilotes rapides et fiables sont disponibles pour MySQL:
Je les ai utilisés tous les deux en production, les programmes fonctionnent depuis des mois avec des numéros de connexion de plusieurs millions sans échec.
D'autres pilotes de base de données SQL sont répertoriés sur go-wiki .
Importer lors de l'utilisation de MyMySQL:
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Importer lors de l'utilisation de Go-MySQL-Driver:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Connexion et fermeture avec 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
Connexion et fermeture à l'aide du pilote Go-MySQL:
con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()
Sélectionnez une ligne:
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)
Sélectionnez plusieurs lignes et créez un tableau avec les résultats:
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})
}
Insérer:
_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)
Vous verrez que travailler en Go avec MySQL est une expérience agréable: je n'ai jamais eu de problème, mes serveurs fonctionnent pendant des mois sans erreurs ni fuites. Le fait que la plupart des fonctions prennent simplement un nombre variable d'arguments allège une tâche fastidieuse dans de nombreuses langues.
Notez que si, à l'avenir, vous devez utiliser un autre pilote MySQL, il vous suffira de modifier deux lignes dans un fichier aller: la ligne effectuant l'importation et la ligne ouvrant la connexion.
SomeThing
. Le but de cette ligne est de montrer comment remplir directement une structure avec le résultat de votre requête sans variables intermédiaires.quelques choses à prendre en compte dans l'exemple de sélection d'une ligne:
il manque un élément
row.Next()
dans cet exemple. il faut appeler lerow.Next()
pour récupérer la première ligne retournée.il y a aussi une certaine rigidité dans la bibliothèque qui, d'une certaine manière, essaie de promouvoir le minimalisme des données. si vous essayez de sélectionner des colonnes qui ne sont pas Scan, cela générera des erreurs (pas seulement des avertissements)
la source