如何从另一个文件或包导入 gorm db 连接
how to import gorm db connection from another file or package
我正在学习围棋,我最近学会了如何利用 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 中使用它:
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 returns,但希望你们明白我的意思。
创建一个包来容纳 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()
中打开数据库并在 return 中关闭:
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) {
...
}
我正在学习围棋,我最近学会了如何利用 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 中使用它:
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 returns,但希望你们明白我的意思。
创建一个包来容纳 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()
中打开数据库并在 return 中关闭:
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) {
...
}