Go语言中http和mysql的实现代码

2020-01-28 13:43:47刘景俊


{{.ArticleContent}}
{{range .slice}}
{{$.ArticleContent}}
{{end}}

定义变量

模板的参数可以是go中的基本数据类型,如字串,数字,布尔值,数组切片或者一个结构体。在模板中设置变量可以使用 $variable := value。我们在range迭代的过程使用了设置变量的方式。


{{$article := "hello"}}
{{$name := .Name}}

mysql 使用

这里只简单讲了数据的增删改查,所以测试代码前,需要先把数据库准备好。

先创建一个数据库,指定了编码,这样应该可以支持中文:


CREATE DATABASE 库名 CHARSET "utf8";

然后建2张表:


CREATE TABLE person (
  user_id int primary key auto_increment,
  username varchar(260),
  gender varchar(260),
  email varchar(260)
);

CREATE TABLE place (
  country varchar(200),
  city varchar(200),
  telcode int
);


导入数据库驱动

sql 包提供了通用的SQL(或类SQL)数据库接口。

sql 包必须与数据库驱动结合使用。

驱动包需要安装:

go get -u github.com/go-sql-driver/mysql

使用前,先要导入mysql的包:


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

上面导入了2个包。第一个是sql包,就是我们调用操作数据库用的。

第二个是驱动包,这里前面加了占位符,所以这个包只是引入,但是不使用它。并且如果要操作别的数据库的话,只需要修改驱动包就行了。

连接数据库

构建连接, 格式是:”用户名:密码@tcp(IP:端口)/数据库?charset=utf8” :


package main

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

var DB *sql.DB

func init() {
  database, err := sql.Open("mysql", "admin:admin123@tcp(192.168.3.103:3306)/Golang_week10")
  if err != nil {
    fmt.Println("连接数据库失败:", err)
    return
  }
  DB = database
}

func main() {
  fmt.Println(DB)
  DB.SetMaxIdleConns(16) //设置闲置连接数
  DB.SetMaxOpenConns(100) //设置最大连接数
  DB.SetConnMaxLifetime(100*time.Second) //最大连接周期,超过时间的连接就close
  fmt.Println(DB)
}


插入数据

下面是插入数据,并且再获取id的示例:


// 数据库连接的init函数就省略了
func insert() {
  r, err := DB.Exec("insert into person(username,gender,email) values(?,?,?)", "Barry", "Male", "Barry@go.net")
  if err != nil {
    fmt.Println("插入数据ERROR:", err)
    return
  }
  fmt.Println(r)
  id, err := r.LastInsertId()
  if err != nil {
    fmt.Println("获取id ERROR:", err)
    return
  }
  fmt.Println(id)
}

func main() {
  insert()
}