A PostgreSQL, amelyet gyakran egyszerűen Postgres-nek neveznek, egy hatékony, nyílt forráskódú objektum-relációs adatbázisrendszer. Több mint 30 éves aktív fejlesztéssel szilárd hírnevet szerzett robusztusságának, fejlett funkcióinak és jelentős szabványmegfelelőségének köszönhetően.
Úgy tervezték, hogy kezelje a kiterjedt munkaterhelést, az egyes gépektől az adattárházakig vagy webszolgáltatásokig sok egyidejű felhasználóval. Tranzakciós integritást és tartósságot biztosít, valamint támogatja a különféle fejlett adattípusokat és a hatékony, rugalmas adatkezelési nyelvet.
Ez az oktatóanyag megtanítja nekünk, hogyan konfigurálhatunk és csatlakoztathatunk egy PostgreSQL-kiszolgálót egy Go alkalmazással.
Követelmények:
Irány a programozási nyelv – Biztosítja, hogy a Go fordító telepítve legyen a gépeden.
PostgreSQL adatbázis – Telepíteni kell a PostgreSQL-t is. Telepítheti közvetlenül a gépére, vagy használhat Docker-tárolót az egyszerűbb beállítás érdekében.
Fejlesztési eszközök – Integrált fejlesztői környezet (IDE), amely támogatja a Go-t, mint a Visual Studio Code, a GoLand stb.
SQL és Go alapismeretek – A PostgreSQL adatbázissal való interakcióhoz meg kell értenie az SQL-t és a különféle lekérdezéseket, amelyeket végre kell hajtania. A Go nyelv alapszintű ismerete is szükséges.
Ha a megadott követelmények teljesülnek, a következő lépésekkel léphetünk tovább.
Projekt beállítása
Kezdjük azzal, hogy felállítjuk projektkönyvtár-struktúránkat. Hozza létre a fő könyvtárat, ahol a projekt forráskódját kell tárolnia.
$ mkdir golang_postgresNavigáljon a könyvtárba, és inicializáljon egy új Go modult.
$ CD golang_postgres && go mod init mainTelepítse a szükséges illesztőprogramokat
A PostgreSQL adatbázissal való interakcióhoz szükségünk van egy PostgreSQL-illesztőprogramra a Go programozási nyelvhez.
Ebben az oktatóanyagban a pq illesztőprogramot használjuk, amely szolgáltatások széles skáláját kínálja a PostgreSQL adatbázissal való együttműködéshez.
A következő parancs futtatásával telepítheti:
keresd fel a github.com oldalt / lib / pqHozzon létre egy adatbázist
A következő lépés egy új PostgreSQL adatbázis létrehozása. Ezt ismét megtehetjük a PostgreSQL shellben.
$ psql -BAN BEN postgresEz a parancs a postgres jelszavát kéri. Miután bejelentkezett, futtassa az „adatbázis létrehozása” parancsot egy új adatbázis inicializálásához:
postgres=# adatbázis létrehozása golang;ADATBÁZIS LÉTREHOZÁSA
Az adott parancs egy új adatbázist hoz létre „golang” néven. Nyugodtan cserélje ki az adatbázis nevét a kívánt névre.
Ezután ellenőrizheti, hogy az adatbázis sikeresen létrejött-e, ha csatlakozik hozzá.
postgres=# \c golang;Most már 'postgres' felhasználóként csatlakozik a 'golang' adatbázishoz.
Ezután állítsa be azt a táblázatot, ahol az adatokat tárolni kívánja. Ehhez az oktatóanyaghoz egy egyszerű táblázatot készítünk, amely tárolja a munkamenet adatait.
TÁBLÁZAT LÉTREHOZÁSA db_clients (azonosító SOROS ELSŐDLEGES KULCS,
név VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
number_of_queries INT DEFAULT 0,
active_state BOOLEAN ALAPÉRTELMEZETT HAMIS
);
Az adott lekérdezésnek létre kell hoznia egy új „db_clients” táblát, amely információkat tárol az adott adatbázis-kiszolgálóra bejelentkezett ügyfelekről.
Csatlakoztassa a Go alkalmazást a PostgreSQL-hez
Miután beállítottuk az adatbázist és az adatbázistáblát, folytathatjuk, és megtanulhatjuk, hogyan kapcsoljuk össze Go alkalmazásunkat a PostgreSQL szerverrel.
Először hozzon létre egy „main.go” fájlt a projekt gyökerében:
$ érintés fő.goEzután szerkessze a fájlt a választott szövegszerkesztővel:
$ mert fő.goA „main.go” fájlban adja hozzá a forráskódot az alábbiak szerint:
csomag főimport (
'adatbázis/sql'
'fmt'
'napló'
_ 'github.com/lib/pq'
)
func main ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Open ( 'postgres' , connStr )
ha téved ! = nulla {
log.Végzetes ( téved )
}
ha err = db.Ping ( ) ; téved ! = nulla {
log.Végzetes ( téved )
}
fmt.Println ( 'Csatlakozva az adatbázishoz' )
}
Az előző kódban a szükséges modulok importálásával kezdjük. Ezután meghatározzuk a fő funkciót. Végül a fő függvényben definiáljuk a kapcsolati karakterláncot, amely lehetővé teszi a célállomás, az adatbázis-felhasználó, az adatbázisjelszó és a tényleges céladatbázis megadását.
A modul a következő paramétereket támogatja a kapcsolati karakterláncban:
- dbname – A csatlakozáshoz szükséges adatbázis neve.
- user – A felhasználó, akiként bejelentkezik.
- jelszó – A felhasználó jelszava.
- host – A gazdagép, amelyhez csatlakozni kell. A „/”-vel kezdődő értékek a Unix tartományi socketekre vonatkoznak (az alapértelmezett a localhost).
- port – A csatlakozáshoz szükséges port (az alapértelmezett 5432).
- sslmode – SSL-t használ-e vagy sem (az alapértelmezés kötelező; ez nem az alapértelmezett a libpq esetében).
- fallback_application_name – Alkalmazásnév, amelyre vissza kell térni, ha nincs megadva.
- connect_timeout – A maximális várakozási idő a csatlakozásra másodpercben. A nulla vagy nincs megadva azt jelenti, hogy a végtelenségig várni kell.
- sslcert – A tanúsítvány fájl helye. A fájlnak tartalmaznia kell a PEM-kódolású adatokat.
- sslkey – A kulcsfájl helye. A fájlnak tartalmaznia kell a PEM-kódolású adatokat.
- sslrootcert – A gyökértanúsítvány fájl helye. A fájlnak tartalmaznia kell a PEM-kódolású adatokat.
Szükség szerint konfigurálhatja a célkapcsolat tulajdonságait. Az SSL és az elfogadott SSLMode paraméterek konfigurálásához tekintse meg oktatóanyagunkat https://linuxhint.com/postgres-sslmode .
Ha elégedett a kapcsolat tulajdonságaival, az előző kód futtatásával tesztelheti, hogy a kapcsolat létrejött-e.
menj futni .\main.goCsatlakozáskor a következő kimenetet kell kapnia:
Adatbázishoz csatlakozvaPostgreSQL Adatok beszúrása a táblázatba
A következő lépés a mintaadatok beszúrása a korábban létrehozott táblázatba. Ezt úgy tehetjük meg, hogy a beszúrási lekérdezéseket karakterlánc-literálként definiáljuk, majd a db.Exec() függvényt használjuk a céllekérdezés futtatásához.
A kód a következő:
---insertStatement := `INSERT INTO db_clients (név, session_time, lekérdezések száma, aktív_állapot)
ÉRTÉKEK
('psql', '2023-05-26 10:15:00', 10, igaz),
('datagrip', '2023-05-26 09:30:00', 5, igaz),
('dbeaver', '2023-05-26 11:00:00', 20, igaz),
('munkapad', '2023-05-26 14:45:00', 15, false),
('távoli', '2023-05-26 13:20:00', 8, igaz);`
_, err = db.Exec(insertStatement)
if err != nil {
log.Fatal(err)
}
Ha az előző kódot futtatja, akkor be kell illesztenie a megadott rekordokat a céltáblába.
PostgreSQL lekérdezési adatok
A tábla sorainak lekérdezéséhez a select utasítást karakterláncként definiálhatjuk, és a db.Query() segítségével futtathatjuk. A Next() függvénnyel iterálhatjuk a táblázat sorait, és kinyomtathatjuk őket az alábbiak szerint:
sorok, err := db.Query ( 'SELECT * FROM db_clients' )ha téved ! = nulla {
log.Végzetes ( téved )
}
sorokat elhalasztani.Bezárni ( )
számára sorok.Következő ( ) {
volt id int
var név karakterlánc
var sessionTime time.Time
var numberOfQueries int
var activeState bool
err := rows.Scan ( & id , & név, & munkamenet ideje, & NumberOfQuerys, & activeState )
ha téved ! = nulla {
log.Végzetes ( téved )
}
fmt.Printf ( 'ID: %d, Név: %s, Munkamenet ideje: %s, Lekérdezések száma: %d, Aktív állapot: %t \n ' , id , név, sessionTime, numberOfQueries, activeState )
}
ha err = sorok.Err ( ) ; téved ! = nulla {
log.Végzetes ( téved )
}
Miután futtattuk az előző kódot, ki kell nyomtatnia a db_clients tábla összes sorát, ahogy az a következő példakimenetben látható:
Tessék, itt van!
Következtetés
Megvizsgáltuk, hogyan használhatjuk a pq csomagot a PostgreSQL adatbázis csatlakoztatására és lekérdezésére a Golang segítségével.