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