services_perform/cmd/mmysql/servicelist.go
2020-10-12 18:53:27 +08:00

74 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package mmysql
import (
"../config"
"database/sql"
"log"
"strings"
//导入mysql的驱动
_ "github.com/go-sql-driver/mysql"
)
type ServiceList struct {
Id int32 `service id`
Name string `service name`
Host string `hostip`
area string `area`
port int `port`
Url string `monitor url`
user string `user`
sendto string `alter message send to`
}
func GetServiceList(area string) (ss []ServiceList) {
var myconn config.MysqlConf
myconn.GetMysqlConn()
path := strings.Join([]string{myconn.User, ":", myconn.Passwd, "@tcp(", myconn.Conn, ")/", "services", "?charset=utf8"}, "")
//打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql"
db, _ := sql.Open("mysql", path)
log.Printf("conn db %s", path)
//设置数据库最大连接数
db.SetConnMaxLifetime(100)
//设置上数据库最大闲置连接数
db.SetMaxIdleConns(10)
//验证连接
if err := db.Ping(); err != nil {
log.Print("opon database fail")
return
}
rows, err := db.Query("select id,name,host,url FROM services.services_list where area=?", area)
//获取完毕释放rows阻止更多的列举
defer rows.Close()
if err != nil {
log.Println("获取错误:", err)
return
}
//如果有数据记录Next指针就不为true
var v []ServiceList
for rows.Next() {
var id int32
var name string
var host string
var url string
rows.Scan(&id, &name, &host, &url)
var s ServiceList
s.Id = id
s.Name = name
s.Host = host
s.Url = url
v = append(v, s)
//log.Println(s)
}
//Err返回可能的、在迭代时出现的错误。Err需在显式或隐式调用Close方法后调用。
err = rows.Err()
if err != nil {
log.Println("other error:", err)
return v
}
//log.Println("return list with area", v)
return v
}