Ricerca nel sito web

Connettiti a un database Postgres nella tua applicazione Go con GORM


Vai più ORM è uguale a GORM! Scopri come configurare questo pratico wrapper di database.

Postgres è uno dei database SQL più popolari grazie alle sue numerose funzionalità e alla facilità d'uso. Postgres è conforme ad ACID con funzionalità come il controllo della concorrenza multiversione, la replica asincrona, le transazioni nidificate e la registrazione write-ahead. Insieme a molte altre, queste funzionalità rendono Postgres il sistema di gestione dei database SQL di riferimento.

L'ecosistema Go ospita molti pacchetti per interagire con vari DBMS, incluso Postgres. Go fornisce il pacchetto database/sql integrato per lavorare con i database SQL utilizzando i driver del database. Utilizzando le strutture dati Go, puoi integrare ORM di terze parti popolari come GORM per una facile interazione con il tuo database.

Iniziare con GORM e Postgres

Il pacchetto GORM è uno degli ORM più popolari nell'ecosistema Go perché è intuitivo per gli sviluppatori, ricco di funzionalità e si basa sul pacchetto database/sql.

GORM fornisce funzionalità per migrazioni automatiche, registrazione, estratti conto, transazioni e partizionamento orizzontale. Il pacchetto adotta l'approccio code-first utilizzando strutture e altri tipi di dati incorporati.

Esegui questo comando da terminale nella tua directory di lavoro per aggiungere il pacchetto GORM alle dipendenze del tuo progetto:

go get gorm.io/gorm\n

Avrai bisogno di un driver di database per far funzionare il pacchetto GORM. GORM fornisce driver di database per i DBMS più diffusi. Esegui questo comando nella tua directory di lavoro per installare il driver GORM Postgres:

go get gorm.io/driver/postgres\n

Connessione di Postgres con Go utilizzando GORM

Importa questi pacchetti nel tuo file Go per lavorare con l'ORM e il driver del database. Utilizzerai il pacchetto log per registrare gli errori sulla tua console e il pacchetto fmt per stampare l'output.

import (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "log"\n)\n

Avrai bisogno di una stringa di connessione per connetterti al tuo database Postgres nell'ambiente in esecuzione. È possibile utilizzare una struttura come modello per i campi che compongono la stringa di connessione. L'uso di una struttura semplifica la modifica e il test di valori diversi, soprattutto nei casi di inserimento delle dipendenze.

Ecco un modello di struttura di esempio per i campi che compongono la stringa di connessione:

type Config struct {\n Host string\n Port string\n Password string\n User string\n DBName string\n SSLMode string\n}\n

Di seguito è riportata una funzione tipica per la connessione al database. Restituisce l'istanza di connessione e un errore a seconda dello stato della connessione.

func NewConnection() (*gorm.DB, error) {\n return db, nil\n}\n

Puoi istanziare il modello della struttura di connessione e riempire i campi con i valori nel tuo database Postgres.

    configurations := Config{\n Host: "database_Host",\n Port: "database_Port",\n Password: "database_Password",\n User: "database_User",\n DBName: "database_Name",\n SSLMode: "false",\n }\n dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", configurations.Host, configurations.Port, configurations.User, configurations.Password, configurations.DBName, configurations.SSLMode)\n

La variabile dsn utilizza il metodo di formattazione Sprintf e i verbi di formattazione Go string per concatenare i campi della struttura Config e impostare la stringa di connessione Postgres.

Puoi aprire una connessione al database con GORM utilizzando il metodo Apri. Il metodo Open accetta una connessione aperta da un driver di database e un elenco di configurazioni opzionali dal tipo Config del pacchetto GORM. Restituisce un'istanza di connessione e un errore facoltativo.

    db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})\n if err != nil {\n return db, err\n }\n

Eseguire il ping del database per verificare lo stato della connessione

Puoi eseguire il ping del tuo database per verificare lo stato di integrità/online con una funzione che restituisce un risultato booleano o un errore se la connessione al database non è valida.

func PingDb() (bool, error) {\n \n return true, nil\n}\n

Dovrai creare una nuova istanza di connessione per eseguire il ping del database. Ecco un esempio che utilizza la funzione NewConnection per creare un'istanza di connessione:

    connectionInstance, err := NewConnection()\n if err != nil {\n log.Fatalf("The database connection failed %v", err.Error())\n }\n

Una volta ottenuta un'istanza di connessione, crea un'istanza di database con il metodo DB della connessione.

    dbConnection, err := connectionInstance.DB()\n if err != nil {\n return false, err\n } \n

Puoi eseguire il ping del database con il metodo Ping dell'istanza del database. Il metodo Ping restituisce eventuali errori oppure zero se la connessione è andata a buon fine.

\n err = dbConnection.Ping()\n if err != nil {\n return false, err\n } else {\n \n fmt.Println("The connection was successful")\n }\n

Un'esecuzione riuscita dovrebbe comportare un output simile a questo:

Puoi utilizzare il pacchetto database/sql per lavorare con il database SQL in Go

Il pacchetto database/sql è estensibile e poiché la maggior parte dei pacchetti di database e driver Go estendono il pacchetto, puoi utilizzare il pacchetto nei tuoi progetti invece di optare per gli ORM.

GORM fornisce anche un generatore SQL per la creazione di SQL non elaborato, utile per le operazioni non supportate.

Articoli correlati: