Postgres Golang

Postgres Golang



Sovint conegut com a Golang, Go és un llenguatge de programació de codi obert, compilat i escrit de manera estàtica, creat per Google. Està dissenyat per ser fàcil d'entendre, ràpid, clar i d'alt rendiment.

PostgreSQL, sovint anomenat simplement Postgres, és un sistema de bases de dades relacional d'objectes de codi obert potent. Amb més de 30 anys de desenvolupament actiu, s'ha guanyat una gran reputació per la seva robustesa, les seves funcions avançades i el compliment substancial dels estàndards.

Està dissenyat per gestionar les càrregues de treball extenses, des de màquines individuals fins a magatzems de dades o serveis web amb molts usuaris concurrents. Proporciona integritat i durabilitat transaccional i admet diversos tipus de dades avançades i un llenguatge de manipulació de dades potent i flexible.







Aquest tutorial ens ensenya com configurar i connectar un servidor PostgreSQL amb una aplicació Go.



Requisits:

Aneu a Llenguatge de programació – Assegura que el compilador Go està instal·lat a la vostra màquina.



Base de dades PostgreSQL – També heu de tenir el PostgreSQL instal·lat. Podeu instal·lar-lo directament a la vostra màquina o utilitzar un contenidor Docker per a una configuració més senzilla.





Eines de desenvolupament – Un entorn de desenvolupament integrat (IDE) que admet Go com Visual Studio Code, GoLand, etc.

Coneixements bàsics de SQL i Go – Per interactuar amb la base de dades PostgreSQL, heu d'entendre SQL i les diferents consultes que heu de realitzar. També necessiteu una comprensió bàsica de l'idioma Go.



Amb els requisits establerts, podem procedir als passos següents.

Configuració del projecte

Comencem configurant la nostra estructura de directoris de projecte. Creeu el directori principal on necessiteu emmagatzemar el codi font del projecte.

$ mkdir golang_postgres

Navegueu al directori i inicialitzeu un nou mòdul Go.

$ cd golang_postgres && anar a mod init main

Instal·leu els controladors necessaris

Per poder interactuar amb la base de dades PostgreSQL, necessitem un controlador PostgreSQL per al llenguatge de programació Go.

Per a aquest tutorial, utilitzem el controlador pq que ofereix una àmplia gamma de funcions per treballar amb la base de dades PostgreSQL.

Podeu instal·lar-lo executant l'ordre següent:

aneu a buscar github.com / lib / pq

Crea una base de dades

El següent pas és crear una nova base de dades PostgreSQL. De nou, ho podem fer a l'intèrpret d'ordres PostgreSQL.

$ psql -IN postgres

Aquesta ordre us demana la contrasenya del postgres. Un cop registrat, executeu l'ordre 'crear base de dades' per inicialitzar una nova base de dades:

postgres=# crear base de dades golang;
CREAR BASE DE DADES

L'ordre donada crea una nova base de dades anomenada 'golang'. No dubteu a substituir el nom de la base de dades pel nom desitjat.

A continuació, podeu comprovar que la base de dades s'ha creat correctament connectant-hi.

postgres=# \c golang;
Ara esteu connectat a la base de dades 'golang' com a usuari 'postgres'.

A continuació, configureu la taula on voleu emmagatzemar les dades. Creem una taula senzilla per a aquest tutorial que emmagatzema la informació de la sessió.

CREA LA TAULA db_clients (
id CLAU PRIMÀRIA DE SÈRIE,
nom VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
nombre_de_consultes INT DEFAULT 0,
active_state BOOLEAN DEFAULT FALSE
);

La consulta donada hauria de crear una nova taula anomenada 'db_clients' que emmagatzema una informació sobre els clients que estan registrats en un servidor de bases de dades determinat.

Connecteu l'aplicació Go amb PostgreSQL

Un cop configurem la base de dades i la taula de bases de dades, podem continuar i aprendre a connectar la nostra aplicació Go amb el servidor PostgreSQL.

Comenceu creant un fitxer 'main.go' a l'arrel del vostre projecte:

$ tocar main.go

A continuació, editeu el fitxer amb l'editor de text que trieu:

$ perquè main.go

Al fitxer 'main.go', afegiu el codi font tal com es mostra a continuació:

paquet principal

importar (
'base de dades/sql'
'fmt'
'registre'

_ 'github.com/lib/pq'
)

funció principal ( ) {
connStr := 'postgres://postgres:contrasenya@localhost/golang?sslmode=disable'
db, err := sql.Open ( 'postgres' , connStr )
si errar ! = nul {
registre.Fatal ( errar )
}

si err = db.Ping ( ) ; errar ! = nul {
registre.Fatal ( errar )
}

fmt.Println ( 'Connexat a la base de dades' )
}

En el codi anterior, comencem per importar els mòduls necessaris. Aleshores definim la funció principal. Finalment, a la funció principal, definim la cadena de connexió que ens permet especificar l'amfitrió de destinació, l'usuari de la base de dades, la contrasenya de la base de dades i la base de dades de destinació real.

El mòdul admet els paràmetres següents a la cadena de connexió:

  • dbname: el nom de la base de dades a la qual es connectar.
  • usuari: l'usuari amb el qual iniciar la sessió.
  • contrasenya: la contrasenya de l'usuari.
  • host: l'amfitrió al qual es connectar. Els valors que comencen per '/' són per a sockets de domini Unix (el valor predeterminat és localhost).
  • port: el port al qual s'enllaça (el valor predeterminat és 5432).
  • sslmode: si s'utilitza o no SSL (el valor predeterminat és requerit; aquest no és el predeterminat per a libpq).
  • nom_aplicació_fallback: un nom_aplicació al qual tornar-hi si no se'n proporciona cap.
  • connect_timeout: l'espera màxima per a la connexió en segons. Zero o no especificat significa esperar indefinidament.
  • sslcert: la ubicació del fitxer de certificat. El fitxer ha de contenir les dades codificades amb PEM.
  • sslkey: la ubicació del fitxer de clau. El fitxer ha de contenir les dades codificades amb PEM.
  • sslrootcert: la ubicació del fitxer del certificat arrel. El fitxer ha de contenir les dades codificades amb PEM.

Podeu configurar les propietats de connexió de destinació segons sigui necessari. Per configurar SSL i els paràmetres SSLMode acceptats, consulteu el nostre tutorial https://linuxhint.com/postgres-sslmode .

Un cop satisfet amb les propietats de la connexió, podeu executar el codi anterior per comprovar si la connexió s'ha establert.

vés a córrer .\main.go

Un cop connectat, hauríeu d'obtenir la sortida següent:

Connectat a la base de dades

PostgreSQL Insereix dades a la taula

El següent pas és inserir les dades de mostra a la taula que hem creat anteriorment. Podem fer-ho definint les consultes d'inserció com a literal de cadena i després utilitzar la funció db.Exec() per executar la consulta de destinació.

El codi és el següent:

---
insertStatement := `INSERT INTO db_clients (nom, hora_sessió, nombre_de_consultes, estat_actiu)
VALORS
('psql', '2023-05-26 10:15:00', 10, cert),
('datagrip', '2023-05-26 09:30:00', 5, veritable),
('dbeaver', '2023-05-26 11:00:00', 20, cert),
('workbench', '2023-05-26 14:45:00', 15, fals),
('remot', '26/05/2023 13:20:00', 8, cert);`

_, err = db.Exec(insertStatement)
si s'erra != nil {
log.Fatal (err)
}

Si executeu el codi anterior, hauria d'inserir els registres especificats a la taula de destinació.

Dades de consulta PostgreSQL

Per consultar les files de la taula, podem definir la instrucció select com una cadena i utilitzar el db.Query() per executar-la. Podem recórrer les files de la taula utilitzant la funció Next() i imprimir-les tal com es mostra a continuació:

files, err := db.Query ( 'SELECT * FROM db_clients' )
si errar ! = nul {
registre.Fatal ( errar )
}
ajornar les files.Tancar ( )

per rows.Next ( ) {
era id int
cadena de nom var
var sessionTime time.Time
var numberOfQueries int
var activeState bool

err := files.Escaneja ( & id , & nom, & hora de sessió, & nombreDeConsultes, & Estat actiu )
si errar ! = nul {
registre.Fatal ( errar )
}

fmt.Printf ( 'ID: %d, nom: %s, temps de sessió: %s, nombre de consultes: %d, estat actiu: %t \n ' , id , name, sessionTime, numberOfQueries, activeState )
}

si err = files.Err ( ) ; errar ! = nul {
registre.Fatal ( errar )
}

Un cop executem el codi anterior, hauria d'imprimir totes les files de la taula db_clients tal com es mostra a la sortida d'exemple següent:

Aquí ho tens!

Conclusió

Hem explorat com podem utilitzar el paquet pq per connectar i consultar la base de dades PostgreSQL mitjançant Golang.