Go 操作mysql使用舉例---連接本地數據庫
阿新 • • 發佈:2018-10-13
sockets unix cnblogs err ini oca .cn ive RoCE
連接數據庫的方式有兩種:TCP和Unix域socket。
本文使用Unix domain sockets連接數據庫。關於TCP連接數據庫可以參考Go 操作mysql使用舉例
package main import ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql" ) type DBConnectionInfo struct { ID []byte User string Host string DB []byte Cmd string Time []byte State string Info []byte } func(f *DBConnectionInfo) String() string{ return fmt.Sprintf("ID:%s, User:%s, Host:%s, DB:%s, Cmd:%s, Time:%s, State:%s, Info:%s", string(f.ID), f.User, f.Host, string(f.DB), f.Cmd, string(f.Time), f.State, string(f.Info)) } const ( mysqlShowProcessList="show processlist" ) var DB *sql.DB //var dataBase = "root:Aa123456@unix(/tmp/mysql.sock)/mysql" var dataBase = "root:Aa123456@unix(/tmp/mysql.sock)/" func Init() { var err error DB, err = sql.Open("mysql", dataBase) if err != nil { log.Fatalln("open db fail:", err) } err = DB.Ping() if err != nil { log.Fatalln("ping db fail:", err) } } func main() { Init() query() } func query() { rows, err := DB.Query(mysqlShowProcessList) if err != nil { log.Println("query failed:", err) return } defer rows.Close() for rows.Next(){ data := &DBConnectionInfo{} if err := rows.Scan(&data.ID, &data.User, &data.Host, &data.DB, &data.Cmd, &data.Time, &data.State, &data.Info); err != nil { log.Println("Scan failed:", err) } fmt.Println("data:", data) } }
output:
data: ID:145, User:root, Host:localhost, DB:, Cmd:Sleep, Time:632, State:, Info:
data: ID:172, User:root, Host:localhost, DB:, Cmd:Query, Time:0, State:starting, Info:show processlist
參考
https://blog.csdn.net/lanyang123456/article/details/79831537
https://www.cnblogs.com/hanyouchun/p/6708037.html
Go 操作mysql使用舉例---連接本地數據庫