Go/Gorm 操作 Postgres

虽然go提供了database/sql包来操作数据库,但是如果有个ORM的包,可以直接操作model来操作数据库,就像node里面的sequelize,是不是 也是挺好的。Gorm就实现了这个功能,这个包目前是github上star数最多的go orm包,包括中文资料,对小伙伴们是相当友好了。

其实使用上,官方文档是非常全了,基本上傻瓜教程。这只是简单说明一下。

package models

import (
	"fmt"
	"time"

	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/postgres"
)

var DB *gorm.DB

func ConnectDataBase() {
	database, err := gorm.Open("postgres", "host=localhost port=54320 user=postgres dbname=timesheet password=123456789 sslmode=disable")

	if err != nil {
		fmt.Println(err)
		panic("Failed to connect to database!")
	}

  // set up schema
	gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
		return "timesheet." + defaultTableName
	}

	database.AutoMigrate(&User{}, &TimeSheet{})

	DB = database
	DB.DB().SetMaxIdleConns(5)
	DB.DB().SetMaxOpenConns(50)
	DB.DB().SetConnMaxLifetime(time.Hour)
}

这代码可以连接到postgres数据库,同时提供一个DB来供后续使用,记得

	defer models.DB.Close()

来关闭

其实有了这个变量DB,你就可以操作,可以说基本上全部的,数据库操作了。

文档