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