sql >> Databáze >  >> RDS >> Mysql

Jaký je doporučený způsob připojení k MySQL z Go?

K dispozici je několik ovladačů, ale měli byste zvážit pouze ty, které implementují databázi/sql API jako

  • poskytuje čistou a efektivní syntaxi,
  • zajišťuje, že můžete později změnit ovladač beze změny kódu, kromě importu a připojení.

Pro MySQL jsou k dispozici dva rychlé a spolehlivé ovladače:

Použil jsem oba v produkci, programy běží měsíce s počty připojení v milionech bez selhání.

Další ovladače databáze SQL jsou uvedeny na go-wiki .

Importovat při používání MyMySQL:

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

Import při použití ovladače Go-MySQL:

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

Připojení a uzavření pomocí 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

Připojení a ukončení pomocí Go-MySQL-Driver:

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

Vyberte jeden řádek:

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)

Vyberte více řádků a vytvořte pole s výsledky:

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

Vložit:

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

Uvidíte, že práce v Go s MySQL je úžasný zážitek:nikdy měl problém, moje servery běží měsíce bez chyb nebo úniků. Skutečnost, že většina funkcí jednoduše přijímá proměnný počet argumentů, usnadňuje úkol, který je v mnoha jazycích únavný.

Všimněte si, že pokud v budoucnu budete potřebovat použít jiný ovladač MySQL, budete muset změnit dva řádky v jednom souboru:řádek provádějící import a řádek otevírající připojení.



  1. Jak spouštět příkazy mysql z terminálu na instalaci MAMP?

  2. Co je nového v MariaDB Server 10.5?

  3. CHYBA:neexistuje žádné jedinečné omezení odpovídající daným klíčům pro odkazovaný pruh tabulky

  4. Výchozí hodnota MySQL jako hodnota jiného pole