Postgres è uno dei database SQL popolari grazie alle sue numerose funzionalità e facilità d'uso. Postgres è conforme ad ACID con funzionalità come Multi-Version Concurrency Control, replica asincrona, transazioni nidificate e registrazione write-ahead. Insieme a molte altre, queste funzionalità rendono Postgres il sistema di gestione del database SQL di riferimento.
L'ecosistema Go ospita molti pacchetti per l'interazione con vari DBMS, incluso Postgres. Go fornisce il built-in banca dati/sql pacchetto per lavorare con i database SQL utilizzando i driver del database. Utilizzando le strutture dati di Go, puoi integrare popolari ORM di terze parti 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 su IL banca dati/sql pacchetto.
GORM fornisce funzionalità per migrazioni automatiche, registrazione, dichiarazioni preparate, transazioni e sharding. Il pacchetto adotta l'approccio code-first utilizzando struct 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:
andare ottieni gorm.io/gorm\n
Avrai bisogno di un driver di database per lavorare con il pacchetto GORM. GORM fornisce driver di database per i DBMS più diffusi. Esegui questo comando nella tua directory di lavoro per installare GORM Postgres autista:
andare ottenere gorm.io/driver/postgres\n
Connettere Postgres con Go utilizzando GORM
Importa questi pacchetti nel tuo file Go per lavorare con l'ORM e il driver del database. Userai il tronco d'albero pacchetto per registrare gli errori sulla tua console e il file fmt pacchetto per stampare l'output.
importare (\N "fmt"\N "gorm.io/driver/postgres"\N "gorm.io/gorm"\N "tronco d'albero"\n)\n
Avrai bisogno di una stringa di connessione per connetterti al tuo Banca dati Postgres nell'ambiente di corsa. È possibile utilizzare uno struct come modello per i campi che costituiscono la stringa di connessione. L'uso di una struttura semplifica la modifica e il test di valori diversi, specialmente nei casi di inserimento di dipendenze.
Ecco un esempio di modello struct per i campi che compongono la stringa di connessione:
tipo Configurazione struct {\n Ospite corda\n Porto corda\nPassword corda\n Utente corda\n NomeDB corda\n Modalità SSL corda\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.
funzNuova connessione()(*gorm. DB, errore) {\N ritorno db, zero\n}\n
Puoi istanziare il modello struct di connessione e riempire i campi con i valori nel tuo database Postgres.
configurazioni := Config{\n Host: "host_database",\n Porta: "porta_database",\nPassword: "password_database",\n Utente: "utente_database",\n NomeDB: "nome del database",\n Modalità SSL: "falso",\n }\n dsn := fmt. Sprintf("host=%s porta=%s utente=%s password=%s dbname=%s sslmode=%s", configurazioni. Host, configurazioni. Porto, configurazioni. Utente, configurazioni. Password, configurazioni. DBName, configurazioni. Modalità SSL)\n
IL dsn variabile utilizza il Sprintf metodo di formattazione e Vai ai verbi di formattazione delle stringhe per concatenare i campi del Configurazione struct e impostare la stringa di connessione Postgres.
È possibile aprire una connessione al database con GORM utilizzando il file Aprire metodo. IL Aprire Il metodo accetta una connessione aperta da un driver di database e un elenco di configurazioni facoltative dal file Configurazione tipo del pacchetto GORM. Restituisce un'istanza di connessione e un errore facoltativo.
db, err := gorm. Apri (postgres. Apri (dsn), &gorm. Configurazione{})\n Se errare!= zero {\N ritorno db, err\n }\n
Ping del database per verificare lo stato della connessione
È possibile eseguire il ping del 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.
funzPingDB()(bool, errore) {\n\n ritornoVERO, zero\n}\n
Dovrai creare una nuova istanza di connessione per eseguire il ping del database. Ecco un esempio usando il Nuova connessione funzione per creare un'istanza di connessione:
connectionInstance, err := NewConnection()\n Se errare!= zero {\n registro. Fatalf("La connessione al database non è riuscita %v", errare. Errore())\n }\n
Dopo aver ottenuto un'istanza di connessione, crea un'istanza di database con l'estensione DB metodo della connessione.
dbConnection, err := connectionInstance. DB()\n Se errare!= zero {\N ritornofalso, err\n } \n
Puoi eseguire il ping del database con il file Ping metodo dell'istanza del database. IL Ping metodo restituisce eventuali errori o zero se la connessione ha avuto successo.
\n errore = dbConnection. Ping()\n Se errare!= zero {\N ritornofalso, err\n } altro {\n \n fmt. Stampaln("La connessione è andata a buon fine")\n }\n
Un'esecuzione riuscita dovrebbe comportare un output simile a questo:
È possibile utilizzare il pacchetto database/sql per lavorare con il database SQL in Go
IL banca dati/sql Il pacchetto è estendibile e poiché la maggior parte dei pacchetti e dei driver del database Go estende il pacchetto, puoi utilizzare il pacchetto nei tuoi progetti invece di optare per gli ORM.
GORM fornisce anche un builder SQL per la creazione di SQL raw, utile per le operazioni non supportate.