Postgres yra viena iš populiariausių SQL duomenų bazių dėl daugybės funkcijų ir naudojimo paprastumo. „Postgres“ yra suderinamas su ACID ir tokiomis funkcijomis kaip kelių versijų lygiagretumo valdymas, asinchroninis replikavimas, įdėtos operacijos ir įrašymas į priekį. Kartu su daugeliu kitų, dėl šių funkcijų „Postgres“ tampa tiesiogine SQL duomenų bazių valdymo sistema.
„Go“ ekosistemoje yra daug paketų, skirtų sąveikai su įvairiomis DBVS, įskaitant „Postgres“. „Go“ suteikia įmontuotą duomenų bazė / sql paketas, skirtas darbui su SQL duomenų bazėmis naudojant duomenų bazių tvarkykles. Naudodami Go duomenų struktūras galite integruoti populiarius trečiųjų šalių ORM, pvz., GORM, kad galėtumėte lengvai sąveikauti su savo duomenų baze.
Darbo su GORM ir Postgres pradžia
GORM paketas yra vienas iš populiariausių ORM Go ekosistemoje, nes jis patogus kūrėjams, turi daug funkcijų ir yra pagrįstas į duomenų bazė / sql paketą.
GORM teikia automatinio perkėlimo, registravimo, parengtų ataskaitų, operacijų ir dalijimosi funkcijas. Paketas naudoja kodą pirmiausia naudojant struktūras ir kitus integruotus duomenų tipus.
Paleiskite šią terminalo komandą savo darbo kataloge, kad pridėtumėte GORM paketą prie savo projekto priklausomybių:
eik gauti gorm.io/gorm\n
Norėdami dirbti su GORM paketu, jums reikės duomenų bazės tvarkyklės. GORM teikia duomenų bazių tvarkykles populiarioms DBVS. Paleiskite šią komandą savo darbo kataloge, kad įdiegtumėte GORM Postgres vairuotojas:
eik gauti gorm.io/driver/postgres\n
„Postgres“ prijungimas prie „Go“ naudojant GORM
Importuokite šiuos paketus į savo Go failą, kad galėtumėte dirbti su ORM ir duomenų bazės tvarkykle. Jūs naudosite žurnalas paketą, kad galėtumėte įrašyti klaidas jūsų konsolėje ir fmt paketą spausdinti.
importuoti (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "rąstas"\n)\n
Norėdami prisijungti prie savo, jums reikės ryšio eilutės Postgres duomenų bazė bėgimo aplinkoje. Struktūrą galite naudoti kaip laukų, sudarančių ryšio eilutę, modelį. Naudojant struktūrą, lengviau keisti ir išbandyti skirtingas vertes, ypač tais atvejais, kai įvedama priklausomybė.
Čia yra laukų, sudarančių ryšio eilutę, struktūros modelio pavyzdys:
tipo konfig struktūra {\n Priegloba styga\n Prievadas styga\n Slaptažodis styga\n Vartotojas styga\n DBName styga\n SSLMode styga\n}\n
Žemiau yra tipinė jūsų duomenų bazės ryšio funkcija. Jis grąžina ryšio egzempliorių ir klaidą, atsižvelgiant į ryšio būseną.
funcNaujas ryšys()(*gorm. DB, klaida) {\n grąžinti db, nulis\n}\n
Galite sukurti ryšio struktūros modelį ir užpildyti laukus reikšmėmis savo Postgres duomenų bazėje.
konfigūracijos := Konfigūracija{\n Priegloba: "database_Host",\n Prievadas: "duomenų bazės_prievadas",\n Slaptažodis: "duomenų bazės_slaptažodis",\n Vartotojas: "duomenų bazė_vartotojas",\n DBName: "duomenų bazės_pavadinimas",\n SSLMode: "netikras",\n }\n dsn := fmt. Sprintf(„host=%s prievadas=%s vartotojas=%s slaptažodis=%s dbname=%s sslmode=%s“, konfigūracijos. Priegloba, konfigūracijos. Prievadas, konfigūracijos. Vartotojas, konfigūracijos. Slaptažodis, konfigūracijos. DBName, konfigūracijos. SSLMode)\n
The dsn kintamasis naudoja Sprintf formatavimo būdas ir Eikite į eilučių formatavimo veiksmažodžius sujungti laukus konfig struct ir nustatykite Postgres ryšio eilutę.
Duomenų bazės ryšį su GORM galite atidaryti naudodami Atviras metodas. The Atviras metodas paima atvirą ryšį iš duomenų bazės tvarkyklės ir pasirenkamų konfigūracijų sąrašą iš konfig GORM paketo tipą. Jis grąžina ryšio egzempliorių ir pasirenkamą klaidą.
db, err := gorm. Atidaryti (postgres. Atidaryti (dsn), &gorm. Config{})\n jeigu klysta! = nulis {\n grąžinti db, klaida\n }\n
Duomenų bazės ping, kad patikrintumėte ryšio būseną
Galite patikrinti duomenų bazę, kad patikrintumėte sveikatos / prisijungimo būseną naudodami funkciją, kuri grąžina loginį rezultatą arba klaidą, jei duomenų bazės ryšys netinkamas.
funcPingDb()(bool, klaida) {\n \n grąžintitiesa, nulis\n}\n
Norėdami patikrinti duomenų bazę, turėsite sukurti naują ryšio egzempliorių. Štai pavyzdys naudojant Naujas ryšys funkcija sukurti ryšio egzempliorių:
connectionInstance, err := NewConnection()\n jeigu klysta! = nulis {\n žurnalas. Fatalf ("Nepavyko prisijungti prie duomenų bazės %v", klysta. Klaida())\n }\n
Kai gausite ryšio egzempliorių, sukurkite duomenų bazės egzempliorių naudodami DB ryšio būdas.
dbConnection, err := connectionInstance. DB()\n jeigu klysta! = nulis {\n grąžintiklaidinga, klaida\n } \n
Galite pinguoti duomenų bazę naudodami Ping duomenų bazės egzemplioriaus metodas. The Ping metodas grąžina visas klaidas arba nulis jei ryšys buvo sėkmingas.
\n klaida = db Ryšys. Ping ()\n jeigu klysta! = nulis {\n grąžintiklaidinga, klaida\n } Kitas {\n \n fmt. Println(„Ryšys buvo sėkmingas“)\n }\n
Sėkmingai paleidus, rezultatas turėtų būti panašus į šį:
Galite naudoti duomenų bazės / sql paketą dirbti su SQL duomenų baze Go
The duomenų bazė / sql paketą galima išplėsti, o kadangi dauguma Go duomenų bazės paketų ir tvarkyklių išplečia paketą, galite naudoti paketą savo projektuose, o ne pasirinkti ORM.
GORM taip pat teikia SQL kūrimo priemonę, skirtą neapdorotam SQL kurti, o tai naudinga nepalaikomoms operacijoms.