Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa cara yang disarankan untuk terhubung ke MySQL dari Go?

Beberapa driver tersedia tetapi Anda sebaiknya hanya mempertimbangkan driver yang mengimplementasikan database/sql API sebagai

  • menyediakan sintaks yang bersih dan efisien,
  • memastikan Anda nanti dapat mengubah driver tanpa mengubah kode Anda, selain impor dan koneksi.

Tersedia dua driver yang cepat dan andal untuk MySQL :

Saya telah menggunakan keduanya dalam produksi, program berjalan selama berbulan-bulan dengan jumlah koneksi jutaan tanpa kegagalan.

Driver database SQL lainnya terdaftar di go-wiki .

Impor saat menggunakan MyMySQL :

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

Impor saat menggunakan Go-MySQL-Driver :

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

Menghubungkan dan menutup menggunakan MySQL :

con, err := sql.Open("mymysql", database+"/"+user+"/"+password)
defer con.Close()
// here you can use the connection, it will be closed when function returns

Menghubungkan dan menutup menggunakan Go-MySQL-Driver :

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

Pilih satu baris :

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)

Pilih beberapa baris dan buat larik dengan hasil :

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

Sisipkan :

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

Anda akan melihat bahwa bekerja di Go dengan MySQL adalah pengalaman yang menyenangkan :Saya tidak pernah punya masalah, server saya berjalan selama berbulan-bulan tanpa kesalahan atau kebocoran. Fakta bahwa sebagian besar fungsi hanya mengambil sejumlah variabel argumen meringankan tugas yang membosankan dalam banyak bahasa.

Perhatikan bahwa jika, di masa mendatang, Anda perlu menggunakan driver MySQL lain, Anda hanya perlu mengubah dua baris dalam satu file:baris yang melakukan impor dan baris yang membuka koneksi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggunakan kaskade penghapusan pada mesin penyimpanan MySQL MyISAM?

  2. WebApp (Tomcat-jdbc) Koneksi DB yang dikumpulkan melemparkan pengecualian pengabaian

  3. Masalah Basis Data UTF-8

  4. Bagaimana cara mengisi celah tanggal di MySQL?

  5. Mysql Exists vs IN -- subquery vs subquery berkorelasi?