go语言访问mysql数据库

Go-MySQL-Driver:一个Go语言的轻量级极速的mysql驱动


原文来自:http://hao.jobbole.com/go-mysql-driver/

Go语言的 database/sql 包的一个 MySQL驱动。

gomysql_m

特性

  • 轻量级与快速
  • 原生Go语言,没有C绑定,只有纯Go
  • 没有不安全的操作(类型转换等)
  • 动态处理崩溃的连接
  • 动态连接池
  • 支持大于16MB的查询
  • 完全 sql.RawBytes支持

环境要求

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

安装

简单地使用 go tool 在shell中把安装包加到你的$GOPATH

1
$ go get github.com /go-sql-driver/mysql

使用

sql包的用法简洁明了:
1、建立连接
首先是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()

2、基本用法
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
这篇文章有很多示例,通俗易懂

一段简单的测试代码:

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。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值