golang 提供了与 Mysql、postgresql 和 mongodb 等不同数据库集成的实战解决方案:连接 mysql:使用 database/sql 包和 go-sql-driver/mysql 驱动程序。查询 postgresql:使用 pgx/v4 和 stdlib 扩展连接到数据库并执行查询。插入 mongodb:使用 mongo-driver 库连接到数据库并向集合中插入数据。
Golang 与各种数据库的集成实战
前言
在现代应用程序开发中,数据库集成至关重要。Golang 作为一门流行的编程语言,提供了强大的功能来无缝连接各种数据库。本文将介绍 Golang 与不同数据库(如 MySQL、PostgreSQL 和 MongoDB)集成的实战案例。
立即学习“go语言免费学习笔记(深入)”;
案例 1:连接 MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package main
import (
"database/sql"
"fmt"
_ "Github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open( "mysql" , "user:password@tcp(127.0.0.1:3306)/database" )
if err != nil {
fmt. Println (err)
return
}
defer db. Close ()
}
|
案例 2:查询 PostgreSQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package main
import (
"context"
"fmt"
"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/stdlib"
)
func main() {
connString := "user=user password=password host=127.0.0.1 port=5432 database=database"
pool, err := pgx.Newpool(context.Background(), stdlib.RegisterConnConfig(connString))
if err != nil {
fmt. Println (err)
return
}
defer pool. Close ()
rows, err := pool.Query(context.Background(), "SELECT * FROM users" )
if err != nil {
fmt. Println (err)
return
}
for rows.Next() {
var id int
var name string
err := rows.Scan(&id, &name)
if err != nil {
fmt. Println (err)
continue
}
fmt.Printf( "ID: %d, Name: %s\n" , id, name)
}
}
|
案例 3:插入 MongoDB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package main
import (
"context"
"fmt"
"log"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
clientOptions := options.Client().applyURI( "mongodb://localhost:27017" )
client, err := mongo.Connect(context.Background(), clientOptions)
if err != nil {
log.Fatal(err)
}
db := client.Database( "mydb" )
collection := db.Collection( "users" )
insertResult, err := collection.InsertOne(context.Background(), map [ string ] interface {}{
"name" : "John Doe" ,
"age" : 30 ,
})
if err != nil {
log.Fatal(err)
}
fmt.Printf( "Inserted document with ID: %s\n" , insertResult.InsertedID)
}
|
结论
通过这些实战案例,我们展示了 Golang 如何轻松地与 MySQL、PostgreSQL 和 MongoDB 等各种数据库集成。利用 Golang 的强大功能,开发人员可以构建可靠且高效的数据驱动的应用程序。