广告位联系
返回顶部
分享到

golang与pgsql交互的实现介绍

Golang 来源:互联网 作者:佚名 发布时间:2023-10-04 22:19:46 人浏览
摘要

1、目的 通过读取配置文件获取pgsql用户名和密码及数据库和数据表,从而读取所需字段值。 2、代码架构 config/config.go:读取配置文件信息 config/config.json:配置文件 handle/handle.go:与pgsql数据

1、目的

通过读取配置文件获取pgsql用户名和密码及数据库和数据表,从而读取所需字段值。

2、代码架构

  • config/config.go:读取配置文件信息
  • config/config.json:配置文件
  • handle/handle.go:与pgsql数据库交互,获取所需数据
  • main.go:主函数

3、代码展示

config.go

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

package config

  

import (

    "io/ioutil"

    "os"

    "fmt"

    "encoding/json"

)

  

type Pgsql struct {

    //Pgsql账号

    Username string `json:"username"`

    //Pgsql密码

    Password string `json:"password"`

    //Pgsql地址

    Address string `json:"address"`

    //Pgsql端口

    Port int `json:"port"`

    //数据库名称

    Database string `json:"database"`

    //表名称

    Table string `json:"table"`

    //账号字段名称

    AccountField string `json:"accountField"`

    //密码字段名称

    PwdField string `json:"pwdField"`

}

  

  

//配置文件路径

var ConfigPath string = "config/config.json"

  

// pgsql配置信息缓存

var PgsqlData *Pgsql

  

  

func Init() {

    //初始化配置对象

    PgsqlData = new(Pgsql)

    //读取配置文件

    file, err := os.Open(ConfigPath)

    if err != nil {

        fmt.Println("config path:", err)

        os.Exit(1)

    }

    bytes, err := ioutil.ReadAll(file)

    if err != nil {

        fmt.Println("config file:", err)

        os.Exit(1)

    }

    //使用json转换至config对象中

    err = json.Unmarshal(bytes, PgsqlData)

    if err != nil {

        fmt.Println("json unmarshal:", err)

        os.Exit(1)

    }

}

config.json

1

2

3

4

5

6

7

8

9

10

{

    "username": "***",

    "password": "*********",

    "address": "localhost",

    "port": 5432,

    "database": "***",

    "table": "***",

    "accountField": "***",

    "pwdField": "***"

}

handle.go

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

package handle

  

import (

    "database/sql"

    "errors"

    "fmt"

    "pgsql/config"

    _ "github.com/lib/pq"

)

  

func Executl() error {

    config.Init()

    if config.PgsqlData != nil {

        //创建mysql连接

        db, err := sql.Open("postgres", fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", config.PgsqlData.Address, config.PgsqlData.Port, config.PgsqlData.Username, config.PgsqlData.Password, config.PgsqlData.Database))

        if err != nil {

            return err

        }

        defer db.Close()

        str := fmt.Sprintf("select %s,%s from %s where NAME='%s'", config.PgsqlData.AccountField, config.PgsqlData.PwdField, config.PgsqlData.Table, config.PgsqlData.Username)

        rows := db.QueryRow(str)

        var name *sql.NullString

        var pwd *sql.NullString

        err = rows.Scan(&name, &pwd)

        if err != nil {

            return err

        }

        if name.String == "" || pwd.String == "" {

            return errors.New("data is null")

        }

        fmt.Println("name:",name.String)

        fmt.Println("passwd:",pwd.String)

        return nil

    }

    return errors.New("open config file failed")

}

main.go

1

2

3

4

5

6

7

8

9

10

11

12

13

package main

  

import (

    "pgsql/handle"

    "os"

)

  

func main() {

    err := handle.Executl()

    if err != nil {

        os.Exit(1)

    }

}


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/qq_41982304/article/details/125905061
相关文章
  • GoLang sync.Pool简介与用法
    一句话总结:保存和复用临时对象,减少内存分配,降低GC压力 sync.Pool是可伸缩的,也是并发安全的,其大小仅受限于内存大小。sync.Pool用
  • golang与pgsql交互的实现介绍

    golang与pgsql交互的实现介绍
    1、目的 通过读取配置文件获取pgsql用户名和密码及数据库和数据表,从而读取所需字段值。 2、代码架构 config/config.go:读取配置文件信息
  • Go语言中rune方法使用介绍

    Go语言中rune方法使用介绍
    1.byte类型 byte类型是uint8的别名,表示一个字节, 2.rune类型 rune类型是Go语言中的一个基本类型,其实就是一个int32的别名,主要用于表示一个
  • Go打包附件内容到执行文件的方法
    如果我们的应用在启动的时候需要对数据库进行初始化(比如建表等), 可以通过读取.sql文件内容直接执行. 但是, 这样会带出一个问题: 在发送
  • go连接kafka的实现教程
    要在Go语言中连接Kafka,需要使用Kafka的Go客户端库,例如sarama。sarama是一个纯Go实现的Kafka客户端库,提供了连接Kafka集群、发送和接收消息等
  • golang占位符的详细介绍
    xdm ,写 C/C++ 语言的时候有格式控制符,例如 %s , %d , %c , %p 等等 在写 golang 的时候,也是有对应的格式控制符,也叫做占位符,写这个占位
  • Go语言实现的微服务性能优化工具介绍
    引言: 随着微服务架构的流行,越来越多的企业开始采用微服务来构建他们的应用程序。然而,由于微服务的分布式特性,往往会面临性能
  • 使用Go语言进行代码优化的介绍
    在日常开发中,我们经常需要优化代码,以提高程序的性能和效率。Go语言作为一门高效的编程语言,提供了许多优化技巧和工具来帮助我们
  • Go框架三件套Gorm Kitex Hertz基本用法与常见API介绍
    Gorm、Kitex、Hertz的基本用法与常见的API讲解 Gorm gorm是Golang语言中一个已经迭代数十年且功能强大、性能极好的ORM框架 ORM:Object Relational Map
  • GoLang sync.Pool的介绍与用法
    一句话总结:保存和复用临时对象,减少内存分配,降低GC压力 sync.Pool是可伸缩的,也是并发安全的,其大小仅受限于内存大小。sync.Pool用
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计