Golang
主页 > 脚本 > Golang >

golang与pgsql交互的实现介绍

2023-10-04 | 佚名 | 点击:

1、目的

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

2、代码架构

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)

    }

}

原文链接:https://blog.csdn.net/qq_41982304/article/details/125905061
相关文章
最新更新