通过读取配置文件获取pgsql用户名和密码及数据库和数据表,从而读取所需字段值。
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) } } |