您现在的位置是:主页 > news > 个人博客网页/seo指搜索引擎
个人博客网页/seo指搜索引擎
admin2025/5/11 19:02:34【news】
简介个人博客网页,seo指搜索引擎,网络培训机构排名,施工企业安全生产管理规范最新版数据库操作 数据库部分我使用postgresql,为了简化上层调用,我又使用了xorm。 库导入 import ("github.com/go-xorm/xorm"_ "github.com/lib/pq" )创建一个全局引擎指针 var engine *xorm.Engine定义一个初始化函数,用…
个人博客网页,seo指搜索引擎,网络培训机构排名,施工企业安全生产管理规范最新版数据库操作
数据库部分我使用postgresql,为了简化上层调用,我又使用了xorm。
库导入
import ("github.com/go-xorm/xorm"_ "github.com/lib/pq"
)创建一个全局引擎指针
var engine *xorm.Engine定义一个初始化函数,用…
数据库操作
数据库部分我使用postgresql,为了简化上层调用,我又使用了xorm。
库导入
import ("github.com/go-xorm/xorm"_ "github.com/lib/pq"
)
创建一个全局引擎指针
var engine *xorm.Engine
定义一个初始化函数,用来初始化数据库相关的一些内容:
func xormInit(driverName string, dataSourceName string) (*xorm.Engine, error) {}
数据库中,我们需要操作四个数据库表:users、log_frame、dev_info和gps_data。根据golang和xorm的映射关系,我们先创建对应的四个结构体。因为dev_info和gps_data是提供给term模块使用的,所以这两个结构体在term包中
type Users struct {Id int `xorm:"pk autoincr notnull id"`Name string `xorm:"name"`Password string `xorm:"password"`IsAdmin bool `xorm:"admin"`Stamp time.Time `xorm:"stamp"`
}type LogFrame struct {Id int `xorm:"pk autoincr notnull id"`Stamp time.Time `xorm:"DateTime notnull 'stamp'"`Dir int `xorm:"dir"`Frame string `xorm:"Varchar(2048) frame"`
}
type DevInfo struct {Authkey string `xorm:"auth_key"`Imei string `xorm:"imei"`Vin string `xorm:"vin"`PhoneNum string `xorm:"pk notnull phone_num"`ProvId uint16 `xorm:"prov_id"`CityId uint16 `xorm:"city_id"`Manuf string `xorm:"manuf"`TermType string `xorm:"term_type"`TermId string `xorm:"term_id"`PlateColor int `xorm:"plate_color"`PlateNum string `xorm:"plate_num"`
}func (d DevInfo) TableName() string {return "dev_info"
}type GPSData struct {Imei string `xorm:"pk notnull imei`Stamp time.Time `xorm:"DateTime pk notnull stamp`WarnFlag uint32 `xorm:"warnflag"`State uint32 `xorm:"state"`AccState uint8 `xorm:"accstate"`GpsState uint8 `xorm:"gpsstate"`Latitude uint32 `xorm:"latitude"`Longitude uint32 `xorm:"longitude"`Altitude uint16 `xorm:"altitude"`Speed uint16 `xorm:"speed"`Direction uint16 `xorm:"direction"`
}func (d GPSData) TableName() string {return "gps_data"
}
我们可以通过结构体的TableName方法来指定数据库表名
初始化xorm引擎
var err error
engine, err = xorm.NewEngine(driverName, dataSourceName)
if err != nil {return engine, err
}
同步数据表结构:
users := new(Users)
err = engine.Sync2(users)
if err != nil {return engine, err
}logframe := new(LogFrame)
err = engine.Sync2(logframe)
if err != nil {return engine, err
}gpsdata := new(term.GPSData)
err = engine.Sync2(gpsdata)
if err != nil {return engine, err
}devinfo := new(term.DevInfo)
err = engine.Sync2(devinfo)
if err != nil {return engine, err
}
Sync2会同步结构体到实际的数据库表上面,如果表不存在,就会自动创建,如果结构体中新增了字段,数据库中也会增加相应字段。
调用:
engine, err = xormInit("postgres", "postgres://pqgotest:pqgotest@localhost/pqgodb?sslmode=require")
连接一个postgres数据库,地址为localhost,用户名为pqgotest,密码为pqgotest,数据库名为pqgodb,后面的sslmode为ssl模式,具体细节网上很多教程,此处不展开。
数据库的插入操作主要使用xorm的Insert函数,查询使用xorm的Find和Get。查询可以配合Where等函数使用。具体参考xorm官方文档