栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Go 连接 PG

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go 连接 PG

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: %vn", db)
	var test Test
	db.Raw("select * from test where id=?", 10).Scan(&test)
	fmt.Printf("test: %vn", test.Id)
	fmt.Printf("test: %vn", test.Name)

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

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

}



结果
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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909640.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号