Go-MySQL-Driver:一個Go語言的輕量級極速的mysql驅動

 

Go語言的 database/sql 包的一個 MySQL驅動。mysql

gomysql_m

特性git

  • 輕量級與快速
  • 原生Go語言,沒有C綁定,只有純Go
  • 沒有不安全的操做(類型轉換等)
  • 動態處理崩潰的鏈接
  • 動態鏈接池
  • 支持大於16MB的查詢
  • 徹底 sql.RawBytes支持

環境要求github

  • Go 1以上
  • MySQL (Version 4.1 or higher), MariaDB or Percona Se
  • rver

安裝golang

簡單地使用 go tool 在shell中把安裝包加到你的$GOPATHsql

 

 

1shell

$ go get github.com/go-sql-driver/mysql數據庫

 

使用安全

sql包的用法簡潔明瞭:
一、創建鏈接
首先是Open,
db, err := sql.Open(「mysql」, 「user:password@/dbname」)
db 是一個*sql.DB類型的指針,在後面的操做中,都要用到db
open以後,並無與數據庫創建實際的鏈接,與數據庫創建實際的鏈接是經過Ping方法完成。此外,db應該在整個程序的生命週期中存在,也就是說,程序一啓動,就經過Open得到db,直到程序結束,再Close db,而不是常常Open/Close。
err = db.Ping()併發

二、基本用法
DB的主要方法有:
Query 執行數據庫的Query操做,例如一個Select語句,返回*Rows測試

QueryRow 執行數據庫至多返回1行的Query操做,返回*Row

PrePare 準備一個數據庫query操做,返回一個*Stmt,用於後續query或執行。這個Stmt能夠被屢次執行,或者併發執行

Exec 執行數不返回任何rows的據庫語句,例如delete操做

Stmt的主要方法:
Exec
Query
QueryRow
Close
用法與DB相似
Rows的主要方法:
Cloumns: 返回[]string,column names
Scan:
Next:
Close:
詳見:
http://golang.org/pkg/database/sql/
https://github.com/go-sql-driver/mysql/wiki/Examples
https://github.com/VividCortex/go-database-sql-tutorial
這篇文章有不少示例,通俗易懂

一段簡單的測試代碼:

 

Java

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

package main

 

import (

"database/sql"

_ "github.com/go-sql-driver/mysql"

"log"

)

 

func insert(db *sql.DB) {

stmt, err := db.Prepare("INSERT INTO user(username, password) VALUES(?, ?)")

defer stmt.Close()

 

if err != nil {

log.Println(err)

return

}

stmt.Exec("guotie", "guotie")

stmt.Exec("testuser", "123123")

 

}

 

func main() {

db, err := sql.Open("mysql", "root:guotie@/hello")

if err != nil {

log.Fatalf("Open database error: %s\n", err)

}

defer db.Close()

 

err = db.Ping()

if err != nil {

log.Fatal(err)

}

 

insert(db)

 

rows, err := db.Query("select id, username from user where id = ?", 1)

if err != nil {

log.Println(err)

}

 

defer rows.Close()

var id int

var name string

for rows.Next() {

err := rows.Scan(&id, &name)

if err != nil {

log.Fatal(err)

}

log.Println(id, name)

}

 

err = rows.Err()

if err != nil {

log.Fatal(err)

}

}

 

 

github地址https://github.com/go-sql-driver/mysql,官網地址 http://godoc.org/github.com/go-sql-driver/mysql。

相關文章
相關標籤/搜索