您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“golang與pgsql交互如何實(shí)現(xiàn)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“golang與pgsql交互如何實(shí)現(xiàn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
通過(guò)讀取配置文件獲取pgsql用戶(hù)名和密碼及數(shù)據(jù)庫(kù)和數(shù)據(jù)表,從而讀取所需字段值。
config/config.go:讀取配置文件信息
config/config.json:配置文件
handle/handle.go:與pgsql數(shù)據(jù)庫(kù)交互,獲取所需數(shù)據(jù)
main.go:主函數(shù)
config.go
package config import ( "io/ioutil" "os" "fmt" "encoding/json" ) type Pgsql struct { //Pgsql賬號(hào) Username string `json:"username"` //Pgsql密碼 Password string `json:"password"` //Pgsql地址 Address string `json:"address"` //Pgsql端口 Port int `json:"port"` //數(shù)據(jù)庫(kù)名稱(chēng) Database string `json:"database"` //表名稱(chēng) Table string `json:"table"` //賬號(hào)字段名稱(chēng) AccountField string `json:"accountField"` //密碼字段名稱(chēng) PwdField string `json:"pwdField"` } //配置文件路徑 var ConfigPath string = "config/config.json" // pgsql配置信息緩存 var PgsqlData *Pgsql func Init() { //初始化配置對(duì)象 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轉(zhuǎn)換至config對(duì)象中 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 { //創(chuàng)建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交互如何實(shí)現(xiàn)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。