Postgres Golang

Postgres Golang



Spesso indicato come Golang, Go è un linguaggio di programmazione open source, compilato e tipizzato staticamente creato da Google. È costruito per essere facile da capire, veloce, chiaro e ad alte prestazioni.

PostgreSQL, spesso indicato semplicemente come Postgres, è un potente sistema di database relazionale a oggetti open source. Con oltre 30 anni di sviluppo attivo, si è guadagnato una solida reputazione per la sua robustezza, funzionalità avanzate e sostanziale conformità agli standard.

È progettato per gestire carichi di lavoro estesi, da singole macchine a data warehouse o servizi Web con molti utenti simultanei. Fornisce integrità transazionale e durabilità e supporta vari tipi di dati avanzati e un linguaggio di manipolazione dei dati potente e flessibile.







Questo tutorial ci insegna come configurare e connettere un server PostgreSQL con un'applicazione Go.



Requisiti:

Vai Linguaggio di programmazione – Assicura che il compilatore Go sia installato sulla tua macchina.



Database PostgreSQL – Devi anche avere installato PostgreSQL. Puoi installarlo direttamente sul tuo computer o utilizzare un contenitore Docker per una configurazione più semplice.





Strumenti di sviluppo – Un ambiente di sviluppo integrato (IDE) che supporta Go come Visual Studio Code, GoLand, ecc.

Conoscenza di base di SQL e Go – Per interagire con il database PostgreSQL, è necessario conoscere SQL e le varie query che è necessario eseguire. È inoltre necessaria una conoscenza di base della lingua Go.



Con i requisiti indicati soddisfatti, possiamo procedere ai seguenti passaggi.

Installazione del progetto

Iniziamo impostando la nostra struttura di directory del progetto. Crea la directory principale in cui devi archiviare il codice sorgente del progetto.

$ mkdir golang_postgres

Passare alla directory e inizializzare un nuovo modulo Go.

$ CD golang_postgres && vai mod init principale

Installa i driver richiesti

Per interagire con il database PostgreSQL, abbiamo bisogno di un driver PostgreSQL per il linguaggio di programmazione Go.

Per questo tutorial, utilizziamo il driver pq che offre un'ampia gamma di funzionalità per lavorare con il database PostgreSQL.

Puoi installarlo eseguendo il seguente comando:

vai su github.com / lib / pq

Crea una banca dati

Il passaggio successivo consiste nel creare un nuovo database PostgreSQL. Ancora una volta, possiamo farlo nella shell PostgreSQL.

$ psql -IN postgres

Questo comando richiede la password del file postgres. Una volta effettuato l'accesso, eseguire il comando 'crea database' per inizializzare un nuovo database:

postgres=# crea database golang;
CREA DATABASE

Il comando dato crea un nuovo database chiamato 'golang'. Sentiti libero di sostituire il nome del database con il nome desiderato.

È quindi possibile verificare che il database sia stato creato correttamente collegandosi ad esso.

postgres=# \c golang;
Ora sei connesso al database 'golang' come utente 'postgres'.

Quindi, imposta la tabella in cui desideri memorizzare i dati. Creiamo una semplice tabella per questo tutorial che memorizza le informazioni sulla sessione.

CREATE TABLE db_clients (
id CHIAVE PRIMARIA SERIALE,
nome VARCHAR(100) NOT NULL,
tempo_sessione TIMESTAMP NOT NULL,
numero_di_interrogazioni INT DEFAULT 0,
active_state BOOLEAN DEFAULT FALSE
);

La query data dovrebbe creare una nuova tabella chiamata 'db_clients' che memorizza le informazioni sui client che hanno effettuato l'accesso a un determinato server di database.

Connetti l'app Go con PostgreSQL

Dopo aver configurato il database e la tabella del database, possiamo procedere e imparare a connettere la nostra applicazione Go con il server PostgreSQL.

Inizia creando un file 'main.go' nella root del tuo progetto:

$ tocco main.go

Successivamente, modifica il file con il tuo editor di testo preferito:

$ Perché main.go

Nel file 'main.go', aggiungi il codice sorgente come mostrato di seguito:

pacchetto principale

importare (
'banca dati/sql'
'fmt'
'tronco d'albero'

_ 'github.com/lib/pq'
)

funzione principale ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disattiva'
db, err := sql.Open ( 'postgres' , constr )
Se errare ! = nullo {
log.Fatal ( errare )
}

Se err = db.Ping ( ) ; errare ! = nullo {
log.Fatal ( errare )
}

fmt.Println ( 'Connesso al database' )
}

Nel codice precedente, iniziamo importando i moduli richiesti. Definiamo quindi la funzione principale. Infine, nella funzione principale, definiamo la stringa di connessione che ci consente di specificare l'host di destinazione, l'utente del database, la password del database e il database di destinazione effettivo.

Il modulo supporta i seguenti parametri nella stringa di connessione:

  • dbname – Il nome del database a cui connettersi.
  • utente: l'utente con cui eseguire l'accesso.
  • password – La password dell'utente.
  • host – L'host a cui connettersi. I valori che iniziano con '/' sono per i socket di dominio Unix (il valore predefinito è localhost).
  • port – La porta a cui collegarsi (il valore predefinito è 5432).
  • sslmode – Indica se utilizzare o meno SSL (l'impostazione predefinita è require; non è l'impostazione predefinita per libpq).
  • fallback_application_name – Un application_name a cui ricorrere se non ne viene fornito uno.
  • connect_timeout – L'attesa massima per la connessione in secondi. Zero o non specificato significa aspettare indefinitamente.
  • sslcert – Il percorso del file cert. Il file deve contenere i dati con codifica PEM.
  • sslkey – La posizione del file chiave. Il file deve contenere i dati con codifica PEM.
  • sslrootcert – La posizione del file del certificato root. Il file deve contenere i dati con codifica PEM.

È possibile configurare le proprietà della connessione di destinazione secondo necessità. Per configurare SSL e i parametri SSLMode accettati, consulta il nostro tutorial su https://linuxhint.com/postgres-sslmode .

Una volta soddisfatti delle proprietà della connessione, è possibile eseguire il codice precedente per verificare se la connessione è stata stabilita.

vai esegui .\main.go

Al momento della connessione, dovresti ottenere il seguente output:

Connesso al database

PostgreSQL inserisce i dati nella tabella

Il passaggio successivo consiste nell'inserire i dati di esempio nella tabella creata in precedenza. Possiamo farlo definendo le query di inserimento come una stringa letterale e quindi utilizzare la funzione db.Exec() per eseguire la query di destinazione.

Il codice è il seguente:

---
insertStatement := `INSERT INTO db_clients (nome, tempo_sessione, numero_di_query, stato_attivo)
VALORI
('psql', '2023-05-26 10:15:00', 10, vero),
('datagrip', '2023-05-26 09:30:00', 5, vero),
('dbeaver', '2023-05-26 11:00:00', 20, vero),
('banco di lavoro', '2023-05-26 14:45:00', 15, falso),
('remoto', '2023-05-26 13:20:00', 8, vero);`

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

Se esegui il codice precedente, dovrebbe inserire i record specificati nella tabella di destinazione.

Dati di query PostgreSQL

Per interrogare le righe dalla tabella, possiamo definire l'istruzione select come una stringa e utilizzare db.Query() per eseguirla. Possiamo iterare sulle righe della tabella usando la funzione Next() e stamparle come mostrato di seguito:

righe, err := db.Query ( 'SELEZIONA * DA db_clients' )
Se errare ! = nullo {
log.Fatal ( errare )
}
posticipare le righe.Chiudi ( )

per righe.Successivo ( ) {
era id int
stringa nome var
var sessionTime ora.Ora
var numeroOfQueries int
var stato attivo bool

err := righe.Scansione ( & id , & nome, & tempo di sessione, & numeroDiQuery, & activeState )
Se errare ! = nullo {
log.Fatal ( errare )
}

fmt.Printf ( 'ID: %d, nome: %s, durata della sessione: %s, numero di query: %d, stato attivo: %t \N ' , id , nome, sessionTime, numberOfQueries, activeState )
}

Se err = righe.Err ( ) ; errare ! = nullo {
log.Fatal ( errare )
}

Una volta eseguito il codice precedente, dovrebbe stampare tutte le righe dalla tabella db_clients come mostrato nel seguente output di esempio:

Ecco qua!

Conclusione

Abbiamo esplorato come possiamo usare il pacchetto pq per connettere ed interrogare il database PostgreSQL usando Golang.