如何切换数据库连接并将其共享到 Golang 中的模型? (Revel + Gorm)

How can I switch database connection and share it to model in Golang? (Revel + Gorm)

我想在 Revel + Gorm(或 Golang 中的任何其他 ORM)中像 https://github.com/thiagopradi/octopus 一样设置数据库分片。

我将在 安全过滤器 中获取数据库连接字符串(这是一个自定义过滤器,添加在 revel 的参数过滤器之后)。现在我需要在下一个名为 db filter

的自定义过滤器中切换数据库连接

并且还需要在 Revel 应用程序启动时实现数据库连接池。

首先是在初始化时准备数据库连接(只调用一次):

db1, err := gorm.Open(dbdriver, dboption) //your main server
db2, err := gorm.Open(dbdriver, dboption) //your sharding 1
db3, err := gorm.Open(dbdriver, dboption) //your sharding 2

在您的数据库过滤器上,只需选择您希望模型使用的 db1、db2 或 db3。就这些了。

Gorm 已经为您制作了游泳池,因此您无需照顾。