草庐IT

pg_query

全部标签

postgresql - 插入关系 go-pg PostgreSQL

我有2个结构来表示ManyToMany关系。用户和注释typeUserstruct{IDintNamestringNotes[]*Note}typeNotestruct{TableNamestruct{}`sql:"user_notes"`IDintTextstring}现在假设我想插入一个新用户,同时添加一些注释。我希望这会插入一个用户及其注释:note:=Note{Text:"alohaadude",}user:=User{Name:"peter",Notes:[]Note{no},}s.DB.Insert(&user)然而,这只会保存用户,而不是用户和笔记。在go-pg中,我必须

postgresql - gorm+go+pg : query for related

所以我们有一个有名字的人。名字和姓氏。让我们插入带有名字和姓氏的Person并再次按Name.First查询Person。怎么办?packagemainimport("fmt""log""github.com/jinzhu/gorm")var(pgHoststringpgUserstringpgDatabasestringpgPassstring)typePersonstruct{gorm.ModelName*NameNameIDuint}typeNamestruct{gorm.ModelPersonIDuintFirststringLaststring}funcmain(){//le

mysql - Golang mysql 客户端 DB.Query 方法不重新编码 utf-8 编码的字符

我有一个mysql表,它的某些列中存储了UTF-8字符。该表是使用DEFAULTCHARSET=utf8创建的;如果我手动运行select语句,我可以看到UTF-8字符,但如果我使用golang客户端并使用DB.Query方法然后我看到字符都是乱码!此外,插入也是从golang客户端完成的。为什么插入内容很好,而读取却出现乱码?在进行查询时,我看不到任何用于设置字符集的参数。我错过了什么? 最佳答案 所以当行被插入数据库时​​,客户端字符集是latin1。默认情况下,golang客户端使用的是utf8。使用utf8再次插入所有行,现

go - 在 go-pg ORM 中为多对多关系指定键

我有这两个具有多对多关系的模型:typePersonstruct{tableNamestruct{}`sql:"person"`UUIDstring`sql:"person_uuid,pk"`ContactDatas[]ContactData`pg:",many2many:person_contact_data,joinFK:"`}typeContactDatastruct{tableNamestruct{}`sql:"contact_data"`UUIDstring`sql:"contact_data_uuid,pk"`}person_contact_data表的模型是:typePe

go-pg "belongs to"2个字段到同一个表

我正在使用https://github.com/go-pg/pg处理这些东西,在建立一个基本的属于关系方面有很大的问题。所以基本上我有一个包含列receipient_id和sender_id的表,它们都指向同一个用户表。这是我的代码和结果:typeTransactionstruct{IdintReceipient*User`json:"receipient_id"sql:"-"validate:"required"`Sender*User`json:"sender_id"sql:"-"validate:"required"`TransactionTypeint`json:"transa

go - 如何使用 go-pg 查询一对多关系

我想查询一个一对多的关系。我有以下结构:typeAppointmentsParticipantsstruct{AppointmentsIDint`sql:",pk"`UserIDint`sql:",pk"`ApprovedboolReviewedAttime.TimeReviewedByintCommentstringCancelledbool}typeAppointmentsstruct{IDint`sql:",pk"`PendingboolStartTimetime.TimeEndTimetime.TimeauditDataInitialAppointmentIDintSessio

Golang go-pg关系递归查询

我需要递归加入,像这样:SELECTa.*,b.*c.*FROMaLEFTJOINbonb.id=a.b_idLEFTJOINcONc.id=b.c_id我的模型定义是:typeAstruct{IDint,NameAstring,B_idintB*B,C*C,}typeBstruct{IDint,C_idint,NameBstring,CC,}typeCstruct{IDint,NameCstring,}我尝试使用关系但没有用:a:=A{}//doesnotworkdb.Model(&a).Relation("B").Relation("C").First()//worksdb.Mod

postgresql - 如果我们将数据库/sql 行对象重新分配给 new Query() 的结果会怎样?它会自动关闭吗?还是我们应该自己关闭它?

我正在使用Golang处理postgresql,我处于必须执行多个查询的情况。如果我将每个查询的结果存储在同一个变量中,我们称之为“行”,每次将该变量重新分配给新的查询结果,它会自动关闭以前的行吗?还是我应该每次都手动关闭它们?如果我应该手动关闭它们,如果我每次都推迟rows.Close()会发生什么?有那么必要吗? 最佳答案 如何调用Rows.Close()*在您再次分配给rows`之前?不,Rows.Close()不会被重新分配自动调用。如果您执行多个不同查询,请使用不同变量来保存每个查询返回的行。分配后为每个调用deferro

go - 使用 pg.Array 时如何将 reflect.Pointer() 转换为 []string?

我正在使用go-pg编写自定义查询缓存系统,该系统采用传递给查询函数的查询参数并生成用于Redis的哈希键。我正在使用Go的reflect来检查有效的参数类型,直到我使用pg.Array作为传递的参数。Reflect给了我reflect.Ptr,但是我如何在调用switchcaseblock时提取指针的结构/数组?funcGenerateQueryCacheKey(args...interface{})string{varargumentString=""for_,arg:=rangeargs{v:=reflect.ValueOf(arg)switchv.Kind(){caserefl

postgresql - 如何使用 go pg CRUD Postgres Point 数据类型

我正在使用Point数据类型在Postgres数据库中存储坐标。如何将Point数据类型映射到Golang数据类型?我没有找到任何相同的文档。 最佳答案 go-pg没有对点类型的本地支持(从PostGIS开始)。我所做的立交桥(可能不是最好的解决方案,但我确实设法让它工作)是在我的模型上放置单独的纬度和经度字段,并在查询本身上使用ColumnExpr使用ST_X(对于经度)和ST_Y(对于纬度,不要忘记)获取单个值。型号:typeMyModelstruct{IDint64NamestringLocationLatfloat64Loc