gpt4 book ai didi

go - 如何从另一个文件或包导入 gorm db 连接

转载 作者:IT王子 更新时间:2023-10-29 01:57:02 36 4
gpt4 key购买 nike

我正在学习 go,我最近学习了如何利用 gorm 连接到数据库。我不知道如何导入所述连接。仅在 func main()

的范围内打开和延迟它的关闭

我目前拥有的:

func main(){
db, _ := gorm.Open("postgres", "host=localhost port=5432 user=someUser dbname=someDB password=somePW sslmode=disable")
defer db.Close()
}

这很好用,我可以创建表并执行 CRUD ...但所有操作都在 main 函数中进行。

无论如何我可以做这样的事情(它没有用)并在 main 中使用它:

func db(){
db, _ := gorm.Open("postgres", "host=localhost port=5432 user=someUser dbname=someDB password=somePW sslmode=disable")
defer db.Close()
return db
}

或者定义某种也允许我这样做的包。

我知道 defer 基本上只会在 db 返回后关闭连接,但希望你们明白我的意思。

最佳答案

创建一个包来保存 database value :

package db

import "github.com/jinzhu/gorm"

var DB *gorm.DB

func Open() error {
var err error
DB, err = gorm.Open("postgres", "host=localhost port=5432 user=someUser dbname=someDB password=somePW sslmode=disable")
if err != nil {
return err
}
}

func Close() error {
return DB.Close()
}

main() 中,打开数据库并在返回时关闭它:

package main

import (
"import/path/of/package/db"
)

func main() {
if err := db.Open(); err != nil {
// handle error
}
defer db.Close()
... do stuff
}

任何包都可以导入 db 包并以 db.DB 的形式访问数据库。

package foo 

import (
"import/path/of/package/db"
)

func doSomethignWithDB() {
db.DB.Query("hello")
}

另一种方法是使用您当前的工作。在 main 中打开数据库并将其传递给需要它的函数:

import "github.com/jinzhu/gorm"

func main(){
db, err := gorm.Open("postgres", "host=localhost port=5432 user=someUser dbname=someDB password=somePW sslmode=disable")
if err != nil {
// handle err
}
defer db.Close()
doSomethingWithDB(db)
}

func doSomethingWithDB(db *gorm.DB) {
...
}

关于go - 如何从另一个文件或包导入 gorm db 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50751788/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com