012-goorm框架之gorm测试(代码片段)

YSHY YSHY     2022-11-21     206

关键词:

1:参考:https://github.com/jinzhu/gorm

2:数据库脚本(pg)

--
create table posts(
    id            serial primary key,
    content        text,
    author        varchar(100),
    create_time    timestamptz
);

create table comments(
    id            serial primary key,
    content        text,
    author        varchar(100),
    post_id        int references posts(id),
    create_time    timestamptz
);

3:posts.go

package posts

import(
	"fmt"
	"github.com/jinzhu/gorm"
	_"github.com/lib/pq"
	"time"
)


type Comment struct
	ID			int 		
	Content		string		`sql:"not null"`
	Author		string		`sql:"not null"`
	PostId		int 		`sql:"post_id"`
	CreateTime	time.Time	`sql:"create_time"`


type Post struct
	ID			int 		
	Content		string		`sql:"not null"`
	Author		string		`sql:"not null"`
	CreateTime	time.Time	`sql:"create_time"`
	Comments	[]Comment



const(
    host = "192.168.72.128"
    port = 5432
    user = "test"
    password = "test"
    dbname = "testdb"
)

var Db *gorm.DB

func init()
	var err error
	
	psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
		"password=%s dbname=%s sslmode=disable",host, port, user, password, dbname)

	Db, err = gorm.Open("postgres", psqlInfo)
	if err != nil
		panic(err)
	

	Db.AutoMigrate(&Post, &Comment)


func (post *Post) CreatePost() error
	return Db.Create(post).Error


func (comment *Comment) CreateComment(post *Post) error
	return Db.Model(post).Association("Comments").Append(comment).Error


func (post *Post) GetComments() (comments []Comment, err error)
	Db.Where("author=$1", "王五").First(post)
	err = Db.Model(&post).Related(&comments).Error
	return

 4:main.go

package main

import(
	"fmt"
	"time"
	"Chapter02/posts"
)

func main()
	post := posts.Post
		Content:"Hello go!",
		Author:"王五",
		CreateTime:	time.Now(),
	

	fmt.Println(post)

	err := post.CreatePost()
	if err!=nil
		panic(err)
	
	fmt.Println(post)

	comment := posts.Comment
		Content:"不错哟",
		Author:"小二",
		CreateTime:	time.Now(),
	
	err = comment.CreateComment(&post)
	if err != nil
		panic(err)
	

	post = posts.Post
	comments, err := post.GetComments()
	if err != nil
		panic(err)
	
	for _,p :=  range comments
		fmt.Printf("%s-%s\n", p.Author,p.Content)
	

  

 

gorm框架学习---crud接口之查询(代码片段)

Gorm框架学习---CRUD接口之查询环境搭建检索单个对象用主键检索检索全部对象条件String条件Struct&Map条件指定结构体查询字段内联条件Not条件Or条件选择特定字段OrderLimit&OffsetGroupBy&HavingDistinctJoinsJoins预加载join派生表(Derived... 查看详情

golang之orm框架gorm快速开始(代码片段)

Gorm快速入门Gorm是Go语言的ORM框架,其特点有:全特性ORM(几乎包含所有特性)模型关联(一对一,一对多,一对多(反向),多对多,多态关联)钩子(Before/AfterCreate/Save/Update/Delete/Find)预加载事务复合主... 查看详情

golang之orm框架gorm快速开始(代码片段)

Gorm快速入门Gorm是Go语言的ORM框架,其特点有:全特性ORM(几乎包含所有特性)模型关联(一对一,一对多,一对多(反向),多对多,多态关联)钩子(Before/AfterCreate/Save/Update/Delete/Find)预加载事务复合主... 查看详情

go之数据库gorm(代码片段)

参考的链接https://gorm.io/docs/migration.htmlhttps://blog.csdn.net/qq_23179075/article/details/88066241  查看详情

gorm框架学习--入门(代码片段)

Gorm框架学习--入门引言快速入门模型定义约定gorm.Model高级选项字段级权限控制创建/更新时间追踪(纳秒、毫秒、秒、Time)嵌入结构体字段标签关联标签连接到数据库MySQL自定义驱动现有的数据库连接其他连接池参考引言... 查看详情

golang修仙记之gorm(代码片段)

学习了如何连接数据库、简单的错误处理、关闭数据库、创建表、创建表中的一条记录、读取表的记录、更新表的记录、删除标的记录packagemainimport("github.com/jinzhu/gorm"_"github.com/jinzhu/gorm/dialects/mysql""time")typeUserstructgorm.ModelNamestring... 查看详情

学习笔记golang之gorm学习笔记(代码片段)

一、模型定义1.模型定义模型是标准的struct,由Go的基本数据类型、实现了Scanner和Valuer接口的自定义类型及其指针或别名组成,如:typeUserstructIDuintNamestringEmail*stringAgeuint8Birthday*time.TimeMemberNumbersql.NullStringActivedAtsql 查看详情

unittest单元测试框架之测试套件(代码片段)

1.测试套件(注意:测试用例先添加先执行,后添加后执行,由此组织与设定测试用例的执行顺序)addTests:添加多个测试用例addTest:添加单个测试用例importunittestfromUnittestDemo.test_mathfuncimportTestMathFuncif__name__=="__main__":  suite=uni... 查看详情

unittest单元测试框架之unittest框架的总结2(代码片段)

unittest下的属性1.Unittest.TestCase:所有测试用例类继承的基本类2.Unittest.main():将一个单元测试模块变为可直接运行的测试脚本If__name__==“__main__”:Unittest.main()3.Unittest.TestSuite:创建测试套件4.unittest.TextTestRunner():unittest框架的TextTestRunn 查看详情

自动化测试框架之pytest(代码片段)

基于python的自动化测试框架:unittest (白盒单元测试)pytest(白盒单元测试)robotframework (系统测试)pytest可以用来做系统测试的自动化,它的特点有用Python编写测试用例,简便易用可以用文... 查看详情

webui自动化测试框架搭建之需求整理详细设计框架设计(代码片段)

(WebUI自动化测试框架搭建之需求整理、详细设计、框架设计)1总体需求1.1实现目的基于BS架构,模拟用户(鼠标、键盘)操作,达到快速、重复执行测试用例;便于回归测试,快速覆盖主线用例或功能;线上或线下巡检测试,结... 查看详情

unittest单元测试框架之测试结果输出到外部文件(代码片段)

1.test_suit执行测试用例及输出结果前添加如下代码(打开会新建d:/result.txt文件):  withopen("d:\result.txt","a")asf:importunittestfromUnittestDemo.test_mathfuncimportTestMathFuncif__name__=="__main__":  suite=unittest.TestSuite( 查看详情

grails框架之domain与gorm

...ails就是为了简化Java-Web企业级应用开发而生的轻量级开源框架。传统的Java程序员经历过 查看详情

gin框架学习-gin框架和gorm框架搭建一个简单的api微服务(代码片段)

...术,不太熟悉的可以去看看我以前的文章快速安装gin框架:https://blog.csdn.net/weixin_46618592/article/details/125540869HTTP请求:https://blog.csdn.net/weixin_46618592/article/details/125565789Gorm入门指南:https://blog.csdn.net/weixin_46618592/articl... 查看详情

unittest单元测试框架之测试用例的跳过(skip)(代码片段)

1.跳过测试用例的方法@unittest.skip("don‘trunthiscase!"):@unittest.skipIf(3<2,"don‘trunthiscase!"):@unittest.skipUnless(3>2,"don‘trunthiscase!"):importunittestfromUnittestDemo.mathfuncimport*classTestMath 查看详情

从java到go搭建go的orm框架gorm(代码片段)

【提问】如何使用Goland软件,搭建一个ORM框架GORM?【解答】具体步骤如下:1、检查Go的安装在任意目录执行如下命令:goversion若有如下返回,则安装成功;如果报异常,则重新安装golanggoversiongo1.19.1darw... 查看详情

从java到go搭建go的orm框架gorm(代码片段)

【提问】如何使用Goland软件,搭建一个ORM框架GORM?【解答】具体步骤如下:1、检查Go的安装在任意目录执行如下命令:goversion若有如下返回,则安装成功;如果报异常,则重新安装golanggoversiongo1.19.1darw... 查看详情

golangorm框架之gorm

最近在想给这个小站增加点赞和评论功能,第三方系统又有各种限制,就想自己弄个后端,实现类似的功能,对于个人来说,数据量不是很大,单机的mysql足够存下所有数据,mysql作为底层存储是个不错的选择之前在公司是直接... 查看详情