Postgres Golang

Postgres Golang



Go, vaak Golang genoemd, is een programmeertaal die open-source, gecompileerd en statisch getypt is en is gemaakt door Google. Het is gebouwd om gemakkelijk te begrijpen, snel, duidelijk en goed presterend te zijn.

PostgreSQL, vaak eenvoudigweg Postgres genoemd, is een krachtig, open-source object-relationeel databasesysteem. Met meer dan 30 jaar actieve ontwikkeling heeft het een sterke reputatie opgebouwd vanwege zijn robuustheid, geavanceerde functies en substantiële naleving van normen.

Het is ontworpen om de uitgebreide workloads aan te kunnen, van enkele machines tot datawarehouses of webservices met veel gelijktijdige gebruikers. Het biedt transactionele integriteit en duurzaamheid en ondersteunt verschillende geavanceerde gegevenstypen en krachtige, flexibele taal voor gegevensmanipulatie.







Deze tutorial leert ons hoe we een PostgreSQL-server kunnen configureren en verbinden met een Go-applicatie.



Vereisten:

Ga programmeertaal - Het zorgt ervoor dat de Go-compiler op uw machine is geïnstalleerd.



PostgreSQL-database - U moet ook de PostgreSQL hebben geïnstalleerd. U kunt het rechtstreeks op uw computer installeren of een Docker-container gebruiken voor een eenvoudigere installatie.





Ontwikkelingshulpmiddelen - Een Integrated Development Environment (IDE) die Go like Visual Studio Code, GoLand, etc. ondersteunt.

Basiskennis van SQL en Go – Om te communiceren met de PostgreSQL-database, moet u SQL en de verschillende queries die u moet uitvoeren begrijpen. Je hebt ook een basiskennis van de Go-taal nodig.



Als aan de gegeven vereisten is voldaan, kunnen we doorgaan naar de volgende stappen.

Projectopstelling

Laten we beginnen met het opzetten van onze projectdirectorystructuur. Maak de hoofdmap waar u de projectbroncode moet opslaan.

$ mkdir golang_postgres

Navigeer naar de map en initialiseer een nieuwe Go-module.

$ CD golang_postgres && ga mod init main

Installeer de vereiste stuurprogramma's

Om te communiceren met de PostgreSQL-database hebben we een PostgreSQL-stuurprogramma nodig voor de Go-programmeertaal.

Voor deze zelfstudie gebruiken we het pq-stuurprogramma dat een breed scala aan functies biedt om met de PostgreSQL-database te werken.

U kunt het installeren door de volgende opdracht uit te voeren:

ga naar github.com / lib / pq

Maak een databank aan

De volgende stap is het maken van een nieuwe PostgreSQL-database. Nogmaals, we kunnen dit doen in de PostgreSQL-shell.

$ psql -IN postgres

Deze opdracht vraagt ​​u om het wachtwoord van het postgres. Nadat u bent ingelogd, voert u de opdracht 'database maken' uit om een ​​nieuwe database te initialiseren:

postgres=# creëer database golang;
CREËER DATABASE

De gegeven opdracht creëert een nieuwe database met de naam 'golang'. Voel je vrij om de databasenaam te vervangen door de door jou gewenste naam.

U kunt vervolgens controleren of de database met succes is gemaakt door er verbinding mee te maken.

postgres=# \c golang;
U bent nu verbonden met database 'golang' als gebruiker 'postgres'.

Stel vervolgens de tabel in waar u de gegevens wilt opslaan. We maken een eenvoudige tabel voor deze zelfstudie waarin de sessie-informatie wordt opgeslagen.

MAAK TABEL db_clients (
id SERIËLE PRIMAIRE SLEUTEL,
naam VARCHAR(100) NIET NULL,
session_time TIMESTAMP NIET NULL,
number_of_queries INT STANDAARD 0,
active_state BOOLEAN STANDAARD ONWAAR
);

De gegeven query zou een nieuwe tabel moeten creëren met de naam 'db_clients' die informatie opslaat over de clients die zijn aangemeld bij een bepaalde databaseserver.

Verbind de Go-app met PostgreSQL

Zodra we de database en de databasetabel hebben ingesteld, kunnen we doorgaan en leren hoe we onze Go-applicatie kunnen verbinden met de PostgreSQL-server.

Begin met het maken van een 'main.go' -bestand in de hoofdmap van uw project:

$ aanraken hoofd.go

Bewerk vervolgens het bestand met uw teksteditor naar keuze:

$ omdat hoofd.go

Voeg in het bestand 'main.go' de broncode toe zoals hieronder wordt weergegeven:

pakket belangrijkste

importeren (
'database/sql'
'fmt'
'logboek'

_ 'github.com/lib/pq'
)

func hoofd ( ) {
connStr := 'postgres://postgres:wachtwoord@localhost/golang?sslmode=disable'
db, fout := sql.Openen ( 'postgres' , constr )
als fout ! = nihil {
log.Fataal ( fout )
}

als fout = db.Ping ( ) ; fout ! = nihil {
log.Fataal ( fout )
}

fmt.Println ( 'Verbonden met database' )
}

In de vorige code beginnen we met het importeren van de benodigde modules. Vervolgens definiëren we de hoofdfunctie. Ten slotte definiëren we in de hoofdfunctie de verbindingsreeks waarmee we de doelhost, databasegebruiker, databasewachtwoord en de eigenlijke doeldatabase kunnen specificeren.

De module ondersteunt de volgende parameters in de verbindingsreeks:

  • dbname – De naam van de database om verbinding mee te maken.
  • gebruiker – De gebruiker om in te loggen als.
  • wachtwoord – Het wachtwoord van de gebruiker.
  • host – De host om verbinding mee te maken. De waarden die beginnen met '/' zijn voor Unix-domeinsockets (standaard is localhost).
  • port – De poort om aan te binden (de standaardwaarde is 5432).
  • sslmode – Het al dan niet gebruiken van SSL (de standaard is vereist; dit is niet de standaard voor libpq).
  • fallback_application_name – Een applicatienaam om op terug te vallen als er geen is opgegeven.
  • connect_timeout – De maximale wachttijd voor verbinding in seconden. Nul of niet gespecificeerd betekent voor onbepaalde tijd wachten.
  • sslcert – De locatie van het certificaatbestand. Het bestand moet de PEM-gecodeerde gegevens bevatten.
  • sslkey – De locatie van het sleutelbestand. Het bestand moet de PEM-gecodeerde gegevens bevatten.
  • sslrootcert – De locatie van het rootcertificaatbestand. Het bestand moet de PEM-gecodeerde gegevens bevatten.

U kunt de eigenschappen van uw doelverbinding naar wens configureren. Raadpleeg onze tutorial op om SSL en de geaccepteerde SSLMode-parameters te configureren https://linuxhint.com/postgres-sslmode .

Als u eenmaal tevreden bent met de verbindingseigenschappen, kunt u de vorige code uitvoeren om te testen of de verbinding tot stand is gebracht.

ga rennen .\main.go

Na verbinding zou u de volgende uitvoer moeten krijgen:

Verbonden met databank

PostgreSQL voegt gegevens in de tabel in

De volgende stap is het invoegen van de voorbeeldgegevens in de tabel die we eerder hebben gemaakt. We kunnen dit doen door de invoegquery's te definiëren als een letterlijke tekenreeks en vervolgens de functie db.Exec() te gebruiken om de doelquery uit te voeren.

De code is als volgt:

---
insertStatement := `INSERT INTO db_clients (name, session_time, number_of_queries, active_state)
WAARDEN
('psql', '2023-05-26 10:15:00', 10, waar),
('datagrip', '2023-05-26 09:30:00', 5, waar),
('dbeaver', '2023-05-26 11:00:00', 20, waar),
('werkbank', '2023-05-26 14:45:00', 15, onwaar),
('remote', '2023-05-26 13:20:00', 8, waar);`

_, err = db.Exec(insertStatement)
als err != nihil {
log.Fataal(err)
}

Als u de vorige code uitvoert, moeten de opgegeven records in de doeltabel worden ingevoegd.

PostgreSQL-querygegevens

Om de rijen uit de tabel op te vragen, kunnen we de select-instructie als een tekenreeks definiëren en de db.Query() gebruiken om deze uit te voeren. We kunnen de tabelrijen herhalen met behulp van de functie Next() en ze afdrukken zoals hieronder weergegeven:

rijen, err := db.Query ( 'SELECT * UIT db_clients' )
als fout ! = nihil {
log.Fataal ( fout )
}
rijen uitstellen.Sluiten ( )

voor rijen.Volgende ( ) {
was ID kaart int
var naamreeks
var sessionTime tijd.Tijd
var numberOfQueries int
var activeState bool

err := rijen. Scannen ( & ID kaart , & naam, & sessieTijd, & aantalQuery's, & actieveState )
als fout ! = nihil {
log.Fataal ( fout )
}

fmt.Printf ( 'ID: %d, naam: %s, sessietijd: %s, aantal zoekopdrachten: %d, actieve status: %t \N ' , ID kaart , naam, sessionTime, numberOfQueries, activeState )
}

als err = rijen.Err ( ) ; fout ! = nihil {
log.Fataal ( fout )
}

Nadat we de vorige code hebben uitgevoerd, moeten alle rijen uit de tabel db_clients worden afgedrukt, zoals wordt weergegeven in de volgende voorbeelduitvoer:

Daar heb je het!

Conclusie

We hebben onderzocht hoe we het pq-pakket kunnen gebruiken om de PostgreSQL-database te verbinden en te bevragen met behulp van Golang.