探寻Go语言常用的数据库挑选
前言:
在现代的程序开发中,不论是Web运用、移动应用或是物联网应用,都少不了数据的存储和查询。但在Go语言中,我们有许多优秀的数据库挑选。本文将探寻Go语言常用的数据库挑选,并提供实际代码实例,帮助读者了解并选择适合自己要求的数据库。一、SQL数据库
MySQL
MySQL是一种时兴的开源关系数据库管理系统。它支持普遍功能和特点,如ACID事务、检索、存储过程等。在Go语言中,我们可以使用第三方库"database/sql"操作MySQL数据库。比如,下列是一个应用MySQL数据库实例编码:
packagemain
import(
"database/sql"
"fmt"
_"github.com/go-sql-driver/mysql"
)
funcmain(){
db,err:=sql.Open("mysql","root:password@tcp(localhost:3306)/test")
iferr!=nil{
fmt.Println("FailedtoconnecttoMySQL:",err)
return
}
deferdb.Close()
//查询数据
rows,err:=db.Query("SELECTFROMusers")
iferr!=nil{
fmt.Println("Failedtoexecutequery:",err)
return
}
deferrows.Close()
forrows.Next(){
varidint
varnamestring
err:=rows.Scan(&id,&name)
iferr!=nil{
fmt.Println("Failedtoscanrow:",err)
return
}
fmt.Println("ID:",id,"Name:",name)
}
iferr:=rows.Err();err!=nil{
fmt.Println("Failedtoretrievedata:",err)
return
}
//插入数据
result,err:=db.Exec("INSERTINTOusers(name)VALUES(?)","John")
iferr!=nil{
fmt.Println("Failedtoinsertdata:",err)
return
}
fmt.Println("InsertID:",result.LastInsertId())
}
PostgreSQL
PostgreSQL是一种功能强大开源目标-关联数据库管理系统。它支持繁杂的查看、事务和完整性约束等特点。在Go语言中,我们可以使用第三方库"database/sql"和"lib/pq"操作PostgreSQL数据库。下列是一个应用PostgreSQL数据库实例编码:
packagemain
import(
"database/sql"
"fmt"
_"github.com/lib/pq"
)
funcmain(){
db,err:=sql.Open("postgres","user=postgrespassword=passworddbname=mydbsslmode=disable")
iferr!=nil{
fmt.Println("FailedtoconnecttoPostgreSQL:",err)
return
}
deferdb.Close()
//查询数据
rows,err:=db.Query("SELECTFROMusers")
iferr!=nil{
fmt.Println("Failedtoexecutequery:",err)
return
}
deferrows.Close()
forrows.Next(){
varidint
varnamestring
err:=rows.Scan(&id,&name)
iferr!=nil{
fmt.Println("Failedtoscanrow:",err)
return
}
fmt.Println("ID:",id,"Name:",name)
}
iferr:=rows.Err();err!=nil{
fmt.Println("Failedtoretrievedata:",err)
return
}
//插入数据
result,err:=db.Exec("INSERTINTOusers(name)VALUES($1)","John")
iferr!=nil{
fmt.Println("Failedtoinsertdata:",err)
return
}
fmt.Println("InsertID:",result.LastInsertId())
}
二、NoSQL数据库
MongoDB
MongoDB是一种基于文档的NoSQL数据库。它以JSON样式的文档存储数据,适用动态查询和灵活的数据模型。在Go语言中,我们可以使用第三方库"go.mongodb.org/mongo-driver"操作MongoDB数据库。下列是一个应用MongoDB数据库实例编码:
packagemain
import(
"context"
"fmt"
"log"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
typeUserstruct{
IDstring
Namestring
}
funcmain(){
client,err:=mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
iferr!=nil{
log.Fatal(err)
}
ctx,cancel:=context.WithTimeout(context.Background(),10time.Second)
defercancel()
err=client.Connect(ctx)
iferr!=nil{
log.Fatal(err)
}
deferclient.Disconnect(ctx)
collection:=client.Database("test").Collection("users")
//查询数据
cur,err:=collection.Find(ctx,bson.D{})
iferr!=nil{
log.Fatal(err)
}
defercur.Close(ctx)
forcur.Next(ctx){
varuserUser
iferr:=cur.Decode(&user);err!=nil{
log.Fatal(err)
}
fmt.Println("ID:",user.ID,"Name:",user.Name)
}
iferr:=cur.Err();err!=nil{
log.Fatal(err)
}
//插入数据
user:=User{ID:"1",Name:"John"}
_,err=collection.InsertOne(ctx,user)
iferr!=nil{
log.Fatal(err)
}
fmt.Println("InsertID:",user.ID)
}
汇总:
文中探索了Go语言常用的数据库挑选,包含SQL数据库(如MySQL和PostgreSQL)和NoSQL数据库(如MongoDB)。根据实际代码实例,读者可以了解到怎样使用这个数据库,并根据自己的喜好选择适合的数据库。自然,这种数据库仅仅是诸多挑选中的一部分,读者还可以根据具体的项目需求选择别的数据库。以上就是Go语言中常见数据库挑选的探索的详细内容,大量请关注其他类似文章!