beego從拿不起來到徹底放棄——使用Gorm連接PostgreSQL

  1. 在beego的conf中添加數據庫連接配置
# pg數據庫配置
#連接數據庫賬號
 pg_user = "postgres"
#連接數據庫密碼
 pg_password = "123456"
#連接數據庫的ip
 pg_host = "127.0.0.1"
#數據庫的端口
 pg_port = "5432"
#連接的數據庫名
 pg_db = "RecruitStudents"
#設置最大打開的連接數,默認值爲0表示不限制
 pg_max_open_conns = 1000
#用於設置閒置的連接數。
 pg_max_idle_conns = 20

2.要連接到數據庫首先要導入驅動程序。

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

3.在models中連接pg數據庫


package models

import (
	"github.com/astaxie/beego"
	"time"

	"github.com/jinzhu/gorm"
	_"github.com/jinzhu/gorm/dialects/postgres"
	//"time"
)
//聲明orm.Ormer 全局使用
var (Db *gorm.DB)

type Photo struct {
	Id			int        `gorm:"column:id"` // ID字段映射 
	XueHao      string
	PhotoURL    string
	Leixing     string
	is_del      int
	memo        string
}
func (u *Photo) TableName() string { //表名映射
	return "photo"
}

func init()  {

	var err error
	var pg_user = beego.AppConfig.String("pg_user")
	var pg_password = beego.AppConfig.String("pg_password")
	var pg_host = beego.AppConfig.String("pg_host")
	//var pg_port =beego.AppConfig.String("pg_port")
	var pg_db = beego.AppConfig.String("pg_db")
	var pg_max_open_conns =  beego.AppConfig.DefaultInt("pg_max_open_conns",1000)
	var pg_max_idle_conns =  beego.AppConfig.DefaultInt("pg_max_idle_conns",20)
	var dataBaseUrl="host="+pg_host+" user="+pg_user+" dbname="+pg_db+" sslmode=disable password="+pg_password
	db, err := gorm.Open("postgres", dataBaseUrl)
	if err != nil {
		panic(err)
	}
	db.DB().SetMaxIdleConns(pg_max_idle_conns) //配置連接池
	db.DB().SetMaxOpenConns(pg_max_open_conns)

	if beego.AppConfig.String("runmode") == "dev" {//如果運行在dev 模式下 則打印sql語句
		db.LogMode(true) //調試模式
	}
	Db=db.New()
}

3 .controllers中使用Gorm
注意:在controllers中 可以使用models.Db的方式獲取數據庫的連接

package login

import (
	"../../models"
	"fmt"
	"github.com/astaxie/beego"
	"github.com/jinzhu/gorm"
)

type LoginMainController struct {
	beego.Controller
}
//返回JSON格式  結構體
type JSONStruct struct {
	Code int
	Msg  string
}

func (c *LoginMainController) Login() {
	//獲取登錄用戶名及密碼
	name := c.GetString("name")
	pwd := c.GetString("pwd")
	//打印  驗證
	fmt.Println(name)
	fmt.Println(pwd)
	//在models.go 裏面查詢數據庫  , T_manager是表名字 ,賦值給u
	u := models.T_manager{}
	//指定查詢對象值  即在查詢Man_user字段中查詢name的值
	//查詢
	err:=models.Db.Where("man_user = ?",name).First(&u).Error

	//定義返回JSON數據序列
	var mystruct=&JSONStruct{}
	//判斷如果查詢不到err返回用戶不存在
	if err == gorm.ErrRecordNotFound{
		fmt.Printf("用戶不存在")
		//返回 用戶名不存在 並返回json數據
		mystruct = &JSONStruct{40001, "用戶不存在",}
	}else {
		if pwd==u.Man_password{
			fmt.Printf("成功")
			//成功
			mystruct = &JSONStruct{0, "成功"}
		} else {
			//密碼錯誤
			fmt.Printf("密碼錯誤")
			mystruct = &JSONStruct{40002, "密碼錯誤"}
		}
	}
	//beego.controller.ServeJSON()
	//通過把要輸出的數據放到Data[“json”]中,然後調用ServeJSON()進行渲染,就可以把數據進行JSON序列化輸出
	c.Data["json"] = mystruct
	c.ServeJSON()
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章