mysql sock golang_Golang mysql使用举例---连接本地数据库

连接数据库的方式有两种:TCP和Unix域socket。

本文使用Unix domain sockets连接数据库。关于TCP连接数据库可以参考Go 操作mysql使用举例

下面例子中,演示了使用show命令查看数据库连接信息的过程。

mysql> show processlist;

+----+------+----------------------+------+---------+------+----------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+----+------+----------------------+------+---------+------+----------+------------------+

| 26 | root | 172.24.232.66:7868 | sys | Query | 0 | starting | show processlist |

+----+------+----------------------+------+---------+------+----------+------------------+

1 row in set (0.00 sec)

代码如下:

package main

import (

"database/sql"

"fmt"

"log"

_ "github.com/go-sql-driver/mysql"

)

type DBConnectionInfo struct {

ID[]byte

Userstring

Hoststring

DB[]byte

Cmdstring

Time[]byte

Statestring

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

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值