本文小编为大家详细介绍“golang与pgsql交互如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang与pgsql交互如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
通过读取配置文件获取pgsql用户名和密码及数据库和数据表,从而读取所需字段值。
config/config.go:读取配置文件信息
config/config.json:配置文件
handle/handle.go:与pgsql数据库交互,获取所需数据
main.go:主函数
config.go
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
{
"username": "***",
"password": "*********",
"address": "localhost",
"port": 5432,
"database": "***",
"table": "***",
"accountField": "***",
"pwdField": "***"
}
handle.go
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
package main
import (
"pgsql/handle"
"os"
)
func main() {
err := handle.Executl()
if err != nil {
os.Exit(1)
}
}
读到这里,这篇“golang与pgsql交互如何实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://blog.csdn.net/qq_41982304/article/details/125905061