Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

A Postgres az egyik legnépszerűbb SQL-adatbázis, számos funkciója és egyszerű használhatósága miatt. A Postgres ACID-kompatibilis olyan szolgáltatásokkal, mint a többverziós egyidejűség-vezérlés, az aszinkron replikáció, a beágyazott tranzakciók és az előreírási naplózás. Sok más mellett ezek a szolgáltatások teszik a Postgrest az SQL adatbázis-kezelő rendszerré.

A Go ökoszisztéma számos csomagnak ad otthont a különféle DBMS-ekkel való interakcióhoz, beleértve a Postgres-t is. Go biztosítja a beépített adatbázis/sql csomag az SQL adatbázisokkal való munkavégzéshez adatbázis-illesztőprogramokkal. A Go adatstruktúrák használatával integrálhatja a népszerű harmadik féltől származó ORM-eket, például a GORM-ot, hogy egyszerű interakciót végezhessen az adatbázisával.

A GORM és a Postgres első lépései

A GORM csomag az egyik legnépszerűbb ORM a Go ökoszisztémában, mert fejlesztőbarát, funkciókban gazdag, és a adatbázis/sql csomag.

A GORM funkciókat biztosít az automatikus migrációhoz, naplózáshoz, előkészített kimutatásokhoz, tranzakciókhoz és felosztáshoz. A csomag a kód-első megközelítést alkalmazza struktúrák és egyéb beépített adattípusok használatával.

Futtassa ezt a terminálparancsot a munkakönyvtárában, hogy hozzáadja a GORM-csomagot a projekt függőségeihez:

megy töltse le a gorm.io/gorm\n webhelyet

A GORM-csomag működéséhez adatbázis-illesztőprogramra lesz szüksége. A GORM adatbázis-illesztőprogramokat biztosít a népszerű DBMS-ekhez. Futtassa ezt a parancsot a munkakönyvtárában a GORM telepítéséhez Postgres sofőr:

megy töltse le a gorm.io/driver/postgres webhelyet\n

A Postgres összekapcsolása a Go-val a GORM segítségével

Importálja ezeket a csomagokat a Go fájlba az ORM és az adatbázis-illesztőprogram használatához. Használja a log csomag a hibák naplózásához a konzolra és a fmt csomagot a nyomtatáshoz.

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

Szüksége lesz egy kapcsolati karakterláncra, hogy csatlakozzon az Önhöz Postgres adatbázis futó környezetben. Struktúrát használhat modellként a kapcsolati karakterláncot alkotó mezőkhöz. A struktúra használata megkönnyíti a különböző értékek módosítását és tesztelését, különösen függőségi injekció esetén.

Íme egy példa struktúramodell a kapcsolati karakterláncot alkotó mezőkhöz:

típus Konfig struct {\n Gazda húr\n Port húr\n Jelszó húr\n Felhasználó húr\n DBName húr\n SSLMode húr\n}\n

Az alábbiakban az adatbázis-kapcsolat tipikus funkciója látható. Visszaadja a kapcsolatpéldányt és a kapcsolat állapotától függően hibát.

funcÚjKapcsolat()(*gorm. DB, hiba) {\n Visszatérés db, nulla\n}\n

Példányosíthatja a kapcsolati struktúra modelljét, és kitöltheti a mezőket a Postgres adatbázis értékeivel.

 konfigurációk := Config{\n Gazdagép: "adatbázis_gazda",\n Port: "adatbázis_port",\n Jelszó: "adatbázis_jelszó",\n Felhasználó: "adatbázis_felhasználó",\n DBName: "adatbázis név",\n SSLMmód: "hamis",\n }\n dsn := fmt. Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", konfigurációk. Gazdagép, konfigurációk. Port, konfigurációk. Felhasználó, konfigurációk. Jelszó, konfigurációk. DBName, konfigurációk. SSLMode)\n

A dsn változó a Sprintf formázási módszer és Go string formating igék hogy összefűzze a mezőit Konfig struct, és állítsa be a Postgres kapcsolati karakterláncot.

Adatbázis-kapcsolatot nyithat a GORM-mal a Nyisd ki módszer. A Nyisd ki metódus egy nyitott kapcsolatot vesz fel egy adatbázis-illesztőprogramból és az opcionális konfigurációk listáját a Konfig a GORM csomag típusa. Egy kapcsolatpéldányt és egy opcionális hibát ad vissza.

 db, err := gorm. Nyitva (postgres. Megnyitás (dsn), &gorm. Config{})\n ha hiba! = nulla {\n Visszatérés db, hiba\n }\n

Az adatbázis pingelése a kapcsolat állapotának ellenőrzéséhez

Az adatbázis megpingelésével ellenőrizheti az állapot/online állapotot egy függvény segítségével, amely logikai eredményt vagy hibát ad vissza, ha az adatbázis-kapcsolat érvénytelen.

funcPingDb()(bool, hiba) {\n \n Visszatérésigaz, nulla\n}\n

Az adatbázis pingeléséhez új kapcsolatpéldányt kell létrehoznia. Íme egy példa a ÚjKapcsolat függvény kapcsolatpéldány létrehozásához:

 connectionInstance, err := NewConnection()\n ha hiba! = nulla {\n napló. Fatalf("Nem sikerült az adatbázis-kapcsolat %v", hiba. Hiba())\n }\n

Miután megszerezte a kapcsolatpéldányt, hozzon létre egy adatbázispéldányt a DB a kapcsolat módja.

 dbConnection, err := kapcsolatPéldány. DB()\n ha hiba! = nulla {\n Visszatéréshamis, hiba\n } \n

Az adatbázist a Ping az adatbázispéldány metódusa. A Ping metódus bármilyen hibát, ill nulla ha a kapcsolat sikeres volt.

\n err = dbKapcsolat. Ping()\n ha hiba! = nulla {\n Visszatéréshamis, hiba\n } más {\n \n fmt. Println("A kapcsolat sikeres volt")\n }\n

A sikeres futtatásnak ehhez hasonló kimenetet kell eredményeznie:

Használhatja az adatbázis/sql csomagot az SQL Database használatához a Go-ban

A adatbázis/sql csomag bővíthető, és mivel a legtöbb Go adatbáziscsomag és illesztőprogram kiterjeszti a csomagot, a csomagot a projektekben használhatja az ORM-ek választása helyett.

A GORM egy SQL-készítőt is biztosít a nyers SQL felépítéséhez, amely hasznos a nem támogatott műveleteknél.