Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest zalecany sposób łączenia się z MySQL z poziomu Go?

Dostępnych jest kilka sterowników, ale należy brać pod uwagę tylko te, które implementują database/sql API jako

  • zapewnia czystą i wydajną składnię,
  • zapewnia to, że możesz później zmienić sterownik bez zmiany kodu, poza importem i połączeniem.

Dostępne są dwa szybkie i niezawodne sterowniki dla MySQL:

Używałem ich obu w produkcji, programy działają od miesięcy z milionami połączeń bez awarii.

Inne sterowniki baz danych SQL są wymienione na go-wiki .

Importuj przy użyciu MyMySQL :

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

Importuj przy użyciu sterownika Go-MySQL-Driver:

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

Łączenie i zamykanie za 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

Łączenie i zamykanie za pomocą sterownika Go-MySQL-Driver:

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

Wybierz jeden wiersz:

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)

Wybierz wiele wierszy i utwórz tablicę z wynikami:

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

Wstaw:

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

Zobaczysz, że praca w Go z MySQL to wspaniałe doświadczenie:nigdy miał problem, moje serwery działają miesiącami bez błędów i wycieków. Fakt, że większość funkcji po prostu przyjmuje zmienną liczbę argumentów, ułatwia zadanie, które jest żmudne w wielu językach.

Zauważ, że jeśli w przyszłości będziesz musiał użyć innego sterownika MySQL, będziesz musiał zmienić tylko dwie linie w jednym pliku go :linię wykonującą import i linię otwierającą połączenie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapisywanie obiektów Pickled Pythona w bazie danych MySQL

  2. Przykłady ASCII() – MySQL

  3. Jaka jest różnica wydajności w implementacjach podziału relacyjnego MySQL (IN AND zamiast IN OR)?

  4. Czy możliwe jest posiadanie domyślnego parametru dla procedury składowanej mysql?

  5. Najlepsze narzędzie do synchronizacji baz danych MySQL