Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la méthode recommandée pour se connecter à MySQL depuis Go ?

Quelques pilotes sont disponibles, mais vous ne devez considérer que ceux qui implémentent la database/sql API en tant que

  • il fournit une syntaxe propre et efficace,
  • cela garantit que vous pourrez modifier ultérieurement le pilote sans modifier votre code, à l'exception de l'importation et de la connexion.

Deux pilotes rapides et fiables sont disponibles pour MySQL :

J'ai utilisé les deux en production, les programmes fonctionnent pendant des mois avec des numéros de connexion dans les 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 avec Go-MySQL-Driver :

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 délicieuse :je jamais eu un problème, mes serveurs ont fonctionné 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 nombreux langages.

Notez que si, dans le futur, vous avez besoin d'utiliser un autre pilote MySQL, vous n'aurez qu'à changer deux lignes dans un fichier go :la ligne faisant l'import et la ligne ouvrant la connexion.