使用go语言的协程,同时运行sql语句以及输出sql结果,比如查询select name from test获取到name的值并同时打印出name的值
时间: 2024-09-09 08:09:47 浏览: 43
Go语言通过其并发特性,特别是goroutines,可以实现同时运行多个函数或代码块。在处理数据库操作时,你可以将SQL查询放在一个goroutine中执行,并在另一个goroutine中处理和打印结果。
以下是一个简单的例子,展示了如何使用Go的goroutines来同时执行SQL查询并打印结果:
```go
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql" // MySQL驱动
"sync"
"time"
)
// 假设你已经创建了一个名为test的数据库和表,并且有一个name字段。
func main() {
// 连接数据库
db, err := sql.Open("mysql", "user:password@/dbname")
if err != nil {
panic(err)
}
defer db.Close()
// 确保数据库连接是活跃的
for {
err = db.Ping()
if err == nil {
break
}
time.Sleep(1 * time.Second)
}
// 使用sync.WaitGroup来等待goroutines完成
var wg sync.WaitGroup
// 启动一个goroutine来执行SQL查询
wg.Add(1)
go func() {
defer wg.Done()
var name string
// 执行查询
err := db.QueryRow("SELECT name FROM test").Scan(&name)
if err != nil {
panic(err)
}
fmt.Println(name)
}()
// 等待所有goroutine完成
wg.Wait()
}
```
这个程序会启动一个goroutine来执行数据库查询,并在查询完成后打印结果。`sync.WaitGroup`用于等待所有goroutine完成,以确保主函数在所有子任务完成之前不会结束。
阅读全文