Go 连接 PG

Go 连接 PG,第1张

Go 连接 PG , 需要使用相关库, 比如 pq 或者 postgres 库, 具体使用方法参考如下实例代码

实例

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/lib/pq"     //方式 1
	"gorm.io/driver/postgres" //方式 2
	"gorm.io/gorm"
)

//连接 PG 方式 1
func test() {
	//此时需要根据实际情况修改
	connStr2 := "host=127.0.0.1 port=55432 dbname=test user=postgres password=passwd sslmode=disable"
	db2, err2 := sql.Open("postgres", connStr2)
	defer db2.Close()
	if err2 != nil {
		log.Fatal(err2)
	}
	r, err := db2.Query("select inet_server_addr(),pg_is_in_recovery(),current_database(),current_user")
	if err != nil {
		log.Fatal(err)
	}

	for r.Next() {
		var inet_server_addr string
		var pg_is_in_recovery string
		var current_database string
		var current_user string
		err = r.Scan(&inet_server_addr, &pg_is_in_recovery, ¤t_database, ¤t_user)
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println("inet_server_addr: " + inet_server_addr)
		fmt.Println("pg_is_in_recovery: " + pg_is_in_recovery)
		fmt.Println("current_database: " + current_database)
		fmt.Println("current_user: " + current_user)
	}
}

type Test struct {
	Id   int
	Name string
}

// 连接 PG, 方式 2
func test2() {
	// 此处需要根据实际情况修改
	dbURL := "postgres://postgres:passwd@127.0.0.1:55432/test"
	db, err := gorm.Open(postgres.Open(dbURL), &gorm.Config{})

	if err != nil {
		log.Fatalln(err)
	}
	fmt.Printf("db: %v\n", db)
	var test Test
	db.Raw("select * from test where id=?", 10).Scan(&test)
	fmt.Printf("test: %v\n", test.Id)
	fmt.Printf("test: %v\n", test.Name)

	var test2 []Test
	db.Raw("select * from test ").Scan(&test2)
	fmt.Printf("test2: %v\n", test2)
	fmt.Printf("len(test2): %v\n", len(test2))
	var count = len(test2)
	for i := 0; i < count; i++ {
		fmt.Printf("test2[i]: %v\n", test2[i])
	}
}

func main() {
	fmt.Println("Hello Go !")
	test()
	test2()

}

/*
 1. 设置环境变量
* 设置 path: /usr/local/go/bin
* 代理设置
go env -w GOPROXY=https://proxy.golang.com.cn,direct

go mod init go_study
go get -u github.com/ramya-rao-a/go-outline
go get -u github.com/smartystreets/goconvey
go get -u cs.opensource.google/go/x/tools

*/

结果
Hello Go !
inet_server_addr: 172.17.0.3
pg_is_in_recovery: false
current_database: test
current_user: postgres
db: &{0xc0002b0120  0 0xc0002d6000 1}
test: 10
test: 10name
test2: [{1 1name} {2 2name} {3 3name} {4 4name} {5 5name} {6 6name} {7 7name} {8 8name} {9 9name} {10 10name}]
len(test2): 10
test2[i]: {1 1name}
test2[i]: {2 2name}
test2[i]: {3 3name}
test2[i]: {4 4name}
test2[i]: {5 5name}
test2[i]: {6 6name}
test2[i]: {7 7name}
test2[i]: {8 8name}
test2[i]: {9 9name}
test2[i]: {10 10name}

参考:
https://goproxy.io/zh/
https://blog.csdn.net/weixin_42100098/article/details/80143023
https://gorm.io/docs/sql_builder.html

欢迎分享,转载请注明来源:内存溢出

原文地址:http://outofmemory.cn/langs/996102.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

随机推荐

  • 阿卡迪亚大学专业详情

    立思辰留学360介绍,阿卡迪亚大学成立于1838年,是加拿大历史长的大学之一,本科教育连续七年在加拿大排名,综合排名总在前10名。在阿卡迪亚大学所获得的学位是被加拿大、美国等很多西方国家认可的。该校被

    2022-07-03
    000
  • 东英吉利大学研究水准处于什么水平

    东英吉利大学(University of East Anglia,简称UEA,又译作东英吉利大学,东英格兰大学),位于英国诺里奇(Norwich)。从1963年创校至今,东英吉利大学特别在传媒、文学、

  • 伦敦玛丽女王大学特色学生服务

    伦敦玛丽女王大学(Queen Mary University of London,简称QMUL或QM)以英国现任女王伊丽莎白二世的祖母;英王乔治五世的妻子-特克家族的玛丽王后命名,又译伦敦大学玛丽女王

    2022-07-03
    300
  • 格拉斯哥大学住宿服务

    格拉斯哥大学(University of Glasgow),简称格大,位于英国第三大城市格拉斯哥市,始建于1451年,是全球最为古老的十所大学之一,英国老牌名校,全球百强大学,英国名校联盟“罗素大学集

    2022-07-03
    100
  • 玛希隆大学费用贵不贵

    玛希隆大学院校介绍立思辰留学360介绍,国立玛希隆大学目前已成为以医学为主的综合性、多学科国际性知名大学。学校设有3个附属医院,14个系,7个研究所,6个学院以及多个国际学术研究中心。该校授予3个专业

  • 申请马汉科理工大学

    马汉科理工大学立思辰留学360介绍,马汉科理工大学(MahanakornUniversityofTechnology)是位于泰国曼谷的一所私立理工大学,成立于1990年。它是一所研究型大学,其课程基于

    2022-07-03
    300
  • 留学美国新罕布什尔大学专业设置

    院系设置工程和物理科学学院、人文学院、生命科学和农业学院、继续教育学院、研究生院、健康和服务学院、应用科学学院、商学和经济学学院。优势专业:英文系、商科管理、工程、应用科学、历史、生物、化学、保健科学

    2022-07-03
    400
  • 2017年圣力嘉学院课程设置

    立思辰留学360介绍,Seneca College,全称Seneca College of Applied Arts and Technology,即圣力嘉应用技术与艺术学院。加拿大圣力嘉学院成立于1

    2022-07-03
    000
  • 2017年help精英大学生活费多少

    立思辰留学360介绍,精英大学的主校区课程全部受到马来西亚教育部批准与承认。在2004年获准升格为大学。获得马来西亚政府批准向世界各地招生,包括在中国招生。精英大学课程内容广泛且多样化,涵盖商业、法律

发表评论

登录后才能评论

评论列表(0条)

    保存