74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
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
|
||
}
|