Mysql
 sql >> база данни >  >> RDS >> Mysql

Какъв е препоръчителният начин за свързване с MySQL от Go?

Налични са няколко драйвера, но трябва да имате предвид само тези, които прилагат database/sql API като

  • осигурява чист и ефективен синтаксис,
  • то гарантира, че по-късно можете да промените драйвера, без да променяте кода си, освен импортирането и връзката.

Два бързи и надеждни драйвера са налични за MySQL :

Използвал съм ги и двата в производството, програмите работят месеци наред с милиони номера на връзките без отказ.

Други драйвери за SQL база данни са изброени в go-wiki .

Импортиране при използване на MyMySQL :

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

Импортиране при използване на Go-MySQL-Driver :

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

Свързване и затваряне с помощта на 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

Свързване и затваряне с помощта на Go-MySQL-Driver :

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

Изберете един ред :

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)

Изберете няколко реда и създайте масив с резултати:

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

Вмъкване:

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

Ще видите, че работата в Go с MySQL е приятно изживяване:аз никога имах проблем, сървърите ми работят месеци без грешки или течове. Фактът, че повечето функции просто приемат променлив брой аргументи, облекчава задачата, която е досадна на много езици.

Имайте предвид, че ако в бъдеще трябва да използвате друг драйвер за MySQL, просто ще трябва да промените два реда във файл:реда, който извършва импортирането и реда, отварящ връзката.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL изрази Грешка в java код при използване на Intellij и DB Navigator

  2. Брой други редове в таблицата със същата стойност

  3. Кое е най-доброто решение за обединяване на връзки към базата данни в python?

  4. Премахнете дубликатите в списъка с обекти с Python

  5. 2 начина за връщане на редове, които съдържат буквено-цифрови знаци в MySQL