Postgres Golang

Postgres Golang



Kadalasang tinutukoy bilang Golang, ang Go ay isang programming language na open-source, compiled, at statically typed na nilikha ng Google. Ito ay ginawa upang madaling maunawaan, mabilis, malinaw, at mahusay na gumaganap.

Ang PostgreSQL, na kadalasang tinatawag na Postgres, ay isang malakas, open-source object-relational database system. Sa higit sa 30 taon ng aktibong pag-unlad, nakakuha ito ng isang malakas na reputasyon para sa pagiging matatag, advanced na mga tampok, at makabuluhang pagsunod sa mga pamantayan.

Ito ay idinisenyo upang pangasiwaan ang malawak na mga workload, mula sa mga solong makina hanggang sa mga warehouse ng data o mga serbisyo sa web na may maraming kasabay na mga user. Nagbibigay ito ng transactional na integridad at tibay at sumusuporta sa iba't ibang advanced na uri ng data at malakas, nababaluktot na wika sa pagmamanipula ng data.







Itinuturo sa amin ng tutorial na ito kung paano i-configure at ikonekta ang isang PostgreSQL server gamit ang isang Go application.



Mga kinakailangan:

Pumunta sa Programming Language – Tinitiyak nito na ang Go compiler ay naka-install sa iyong makina.



Database ng PostgreSQL – Kailangan mo ring mai-install ang PostgreSQL. Maaari mo itong i-install nang direkta sa iyong makina o gumamit ng Docker container para sa isang mas diretsong setup.





Mga Tool sa Pag-unlad – Isang Integrated Development Environment (IDE) na sumusuporta sa Go tulad ng Visual Studio Code, GoLand, atbp.

Pangunahing Kaalaman ng SQL at Go – Upang makipag-ugnayan sa database ng PostgreSQL, dapat mong maunawaan ang SQL at ang iba't ibang mga query na kailangan mong isagawa. Kailangan mo rin ng pangunahing pag-unawa sa wikang Go.



Sa ibinigay na mga kinakailangan, maaari tayong magpatuloy sa mga sumusunod na hakbang.

Pag-setup ng Proyekto

Magsimula tayo sa pamamagitan ng pag-set up ng istraktura ng direktoryo ng proyekto. Lumikha ng pangunahing direktoryo kung saan kailangan mong iimbak ang source code ng proyekto.

$ mkdir golang_postgres

Mag-navigate sa direktoryo at magpasimula ng bagong Go module.

$ cd golang_postgres && pumunta sa mod init main

I-install ang Mga Kinakailangang Driver

Upang makipag-ugnayan sa database ng PostgreSQL, kailangan namin ng PostgreSQL driver para sa Go programing language.

Para sa tutorial na ito, ginagamit namin ang pq driver na nag-aalok ng malawak na hanay ng mga tampok upang gumana sa database ng PostgreSQL.

Maaari mong i-install ito sa pamamagitan ng pagpapatakbo ng sumusunod na command:

kunin ang github.com / lib / pq

Lumikha ng isang Database

Ang susunod na hakbang ay lumikha ng bagong database ng PostgreSQL. Muli, magagawa natin ito sa PostgreSQL shell.

$ psql -SA postgres

Ang utos na ito ay nag-uudyok sa iyo para sa password ng mga postgres. Sa sandaling naka-log, patakbuhin ang command na 'lumikha ng database' upang magsimula ng isang bagong database:

postgres=# lumikha ng database golang;
GUMAWA NG DATABASE

Ang ibinigay na command ay lumilikha ng isang bagong database na tinatawag na 'golang'. Huwag mag-atubiling palitan ang pangalan ng database ng iyong gustong pangalan.

Maaari mong i-verify na matagumpay na nalikha ang database sa pamamagitan ng pagkonekta dito.

postgres=# \c golang;
Nakakonekta ka na ngayon sa database na 'golang' bilang user na 'postgres'.

Susunod, i-set up ang talahanayan kung saan mo gustong iimbak ang data. Lumilikha kami ng isang simpleng talahanayan para sa tutorial na ito na nag-iimbak ng impormasyon ng session.

GUMAWA NG TABLE db_clients (
id SERIAL PRIMARY KEY,
pangalan VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
number_of_queries INT DEFAULT 0,
active_state BOOLEAN DEFAULT FALSE
);

Ang ibinigay na query ay dapat lumikha ng isang bagong talahanayan na tinatawag na 'db_clients' na nag-iimbak ng impormasyon tungkol sa mga kliyente na naka-log in sa isang ibinigay na server ng database.

Ikonekta ang Go App sa PostgreSQL

Kapag na-setup na namin ang database at ang talahanayan ng database, maaari kaming magpatuloy at matutunan kung paano ikonekta ang aming Go application sa PostgreSQL server.

Magsimula sa pamamagitan ng paglikha ng 'main.go' na file sa ugat ng iyong proyekto:

$ hawakan main.go

Susunod, i-edit ang file gamit ang iyong napiling text editor:

$ kasi main.go

Sa 'main.go' na file, idagdag ang source code tulad ng ipinapakita sa sumusunod:

pangunahing pakete

angkat (
'database/sql'
'fmt'
'log'

_ 'github.com/lib/pq'
)

func main ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Buksan ( 'postgres' , connStr )
kung magkamali ! = wala {
log.Fatal ( magkamali )
}

kung err = db.Ping ( ) ; magkamali ! = wala {
log.Fatal ( magkamali )
}

fmt.Println ( 'Nakakonekta sa database' )
}

Sa nakaraang code, magsisimula kami sa pamamagitan ng pag-import ng mga kinakailangang module. Pagkatapos ay tinukoy namin ang pangunahing pag-andar. Sa wakas, sa pangunahing pag-andar, tinukoy namin ang string ng koneksyon na nagpapahintulot sa amin na tukuyin ang target na host, user ng database, password ng database, at ang aktwal na target na database.

Sinusuportahan ng module ang mga sumusunod na parameter sa string ng koneksyon:

  • dbname - Ang pangalan ng database na kumonekta.
  • user – Ang user na mag-sign in bilang.
  • password – Password ng user.
  • host – Ang host na kumonekta sa. Ang mga value na nagsisimula sa “/” ay para sa Unix domain sockets (ang default ay localhost).
  • port – Ang port na ibibigkis (ang default ay 5432).
  • sslmode – Gagamitin man o hindi ang SSL (kinakailangan ang default; hindi ito ang default para sa libpq).
  • fallback_application_name - Isang application_name na babalikan kung hindi ibinigay ang isa.
  • connect_timeout – Ang maximum na paghihintay para sa koneksyon sa ilang segundo. Ang ibig sabihin ng zero o hindi tinukoy ay maghintay nang walang katiyakan.
  • sslcert - Ang lokasyon ng cert file. Ang file ay dapat maglaman ng data na naka-encode ng PEM.
  • sslkey - Ang pangunahing lokasyon ng file. Ang file ay dapat maglaman ng data na naka-encode ng PEM.
  • sslrootcert – Ang lokasyon ng root certificate file. Ang file ay dapat maglaman ng data na naka-encode ng PEM.

Maaari mong i-configure ang iyong mga katangian ng target na koneksyon kung kinakailangan. Upang i-configure ang SSL at ang mga tinatanggap na mga parameter ng SSLMode, tingnan ang aming tutorial sa https://linuxhint.com/postgres-sslmode .

Kapag nasiyahan sa mga katangian ng koneksyon, maaari mong patakbuhin ang nakaraang code upang subukan kung ang koneksyon ay naitatag.

tumakbo ka .\main.go

Sa koneksyon, dapat mong makuha ang sumusunod na output:

Nakakonekta sa database

PostgreSQL Ipasok ang Data sa Talahanayan

Ang susunod na hakbang ay ipasok ang sample na data sa talahanayan na ginawa namin kanina. Magagawa natin ito sa pamamagitan ng pagtukoy sa mga insert query bilang literal na string at pagkatapos ay gamitin ang db.Exec() function upang patakbuhin ang target na query.

Ang code ay ang mga sumusunod:

---
insertStatement := `INSERT INTO db_clients (pangalan, session_time, number_of_queries, active_state)
MGA HALAGA
('psql', '2023-05-26 10:15:00', 10, totoo),
('datagrip', '2023-05-26 09:30:00', 5, totoo),
('dbeaver', '2023-05-26 11:00:00', 20, totoo),
('workbench', '2023-05-26 14:45:00', 15, false),
('remote', '2023-05-26 13:20:00', 8, totoo);`

_, err = db.Exec(insertStatement)
kung mali != nil {
log.Fatal(err)
}

Kung patakbuhin mo ang nakaraang code, dapat nitong ipasok ang tinukoy na mga tala sa target na talahanayan.

Data ng Query sa PostgreSQL

Upang i-query ang mga row mula sa talahanayan, maaari nating tukuyin ang select statement bilang isang string at gamitin ang db.Query() para patakbuhin ito. Maaari naming ulitin ang mga hilera ng talahanayan gamit ang Next() function at i-print ang mga ito tulad ng ipinapakita sa sumusunod:

rows, err := db.Query ( 'PUMILI * MULA sa db_clients' )
kung magkamali ! = wala {
log.Fatal ( magkamali )
}
ipagpaliban ang mga hilera.Isara ( )

para sa mga hilera.Susunod ( ) {
ay id int
var name string
var sessionTime time.Time
var numberOfQueries int
var activeState bool

err := rows.Scan ( at id , at pangalan, at sessionTime, at numberOfQueries, at activeState )
kung magkamali ! = wala {
log.Fatal ( magkamali )
}

fmt.Printf ( 'ID: %d, Pangalan: %s, Oras ng Session: %s, Bilang ng Mga Query: %d, Aktibong Estado: %t \n ' , id , pangalan, sessionTime, numberOfQueries, activeState )
}

kung err = rows.Err ( ) ; magkamali ! = wala {
log.Fatal ( magkamali )
}

Sa sandaling patakbuhin namin ang nakaraang code, dapat nitong i-print ang lahat ng mga hilera mula sa talahanayan ng db_clients tulad ng ipinapakita sa sumusunod na halimbawang output:

Ayan na!

Konklusyon

Ginalugad namin kung paano namin magagamit ang pq package para ikonekta at i-query ang database ng PostgreSQL gamit ang Golang.