Beego 操作华为云数据库 GaussDB

举报
StanleyZhang 发表于 2024/11/20 15:29:49 2024/11/20
【摘要】 Beego 是一个用于 Go 编程语言的开源、高性能 Web 框架,可用于快速开发 Go 中的企业应用程序,包括 RESTful API、Web 应用程序和后端服务。它的灵感来自 Tornado、Sinatra 和 Flask,Beego 在中国具备大量的用户基础。

背景介绍

Beego 是一个用于 Go 编程语言的开源、高性能 Web 框架,可用于快速开发 Go 中的企业应用程序,包括 RESTful APIWeb 应用程序和后端服务。它的灵感来自 TornadoSinatra  FlaskBeego 在中国具备大量的用户基础。 

华为云数据库 GaussDB 是华为自主创新研发的分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力。

开发思路

Beego ORM 支持 MySQL,PostgreSQL,Sqlite3 数据库,在使用 orm 时,导入对应的数据库驱动库即可。

下面是该项目给出的使用示例:

import (
	"github.com/beego/beego/v2/client/orm"
	_ "github.com/go-sql-driver/mysql" // import your used driver
)

// set default database
orm.RegisterDataBase("default", "mysql", "root:root@/my_db?charset=utf8", 30)
	
// create table
orm.RunSyncdb("default", false, true)	

o := orm.NewOrm()

具体实现

我们从华为云数据库 GaussDB 官网下载的驱动压缩包是在开源版驱动的基础上,在创建数据库连接时多注册了“postgres”和“postgresql”这两个驱动名称。我们只需要在使用时在 go.mod 中使用 replace 替换到本地包,即可像使用 PostgreSQL 数据库一样使用 GaussDB。

下面是示例代码:

import (
	_ "gitee.com/opengauss/openGauss-connector-go-pq"

	"github.com/beego/beego/v2/client/orm"
)

func NewServiceContext(c config.Config) *ServiceContext {
	// 注册 postgres 驱动,使用 GaussDB 驱动库
	orm.RegisterDriver("postgres", orm.DRPostgres)
	orm.RegisterDataBase("default", "postgres", c.DSN)

	return &ServiceContext{
		Config: c,
		DB:     orm.NewOrm(),
	}
}

部署测试

为了在微服务开发中使用 Beego ORM 来操作 GaussDB 数据库,在编写 Demo 微服务时我使用 go-zero 框架来实现 RESTful 接口服务。go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。

Demo 参考地址:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoGo

Demo 开发完成以后,我使用华为云的软件开发生产线 CodeArts 来构建这个 Demo 服务,具体方法可以参考:

在华为云部署示例项目:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/blob/main/zh_CN/docs/cicd-pipeline.md

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。