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()
}

你可能感兴趣的:(Beego,beego,postgreSql)