Postgres on oma paljude funktsioonide ja kasutuslihtsuse tõttu üks populaarsemaid SQL-andmebaase. Postgres on ACID-ühilduv selliste funktsioonidega nagu mitme versiooni samaaegsuse kontroll, asünkrooniline replikatsioon, pesastatud tehingud ja ettekirjutamise logimine. Koos paljude teiste funktsioonidega muudavad need Postgres SQL-i andmebaasihaldussüsteemiks.
Go ökosüsteem on koduks paljudele pakettidele, mis võimaldavad suhelda erinevate DBMS-idega, sealhulgas Postgresiga. Go pakub sisseehitatud andmebaas/sql pakett SQL-andmebaasidega töötamiseks, kasutades andmebaasi draivereid. Go andmestruktuure kasutades saate oma andmebaasiga hõlpsaks suhtlemiseks integreerida populaarseid kolmanda osapoole ORM-e, nagu GORM.
GORMi ja Postgresiga alustamine
GORM pakett on Go ökosüsteemis üks populaarsemaid ORM-e, kuna see on arendajasõbralik, funktsioonirikas ja tugineb a andmebaas/sql pakett.
GORM pakub funktsioone automaatseks migratsiooniks, logimiseks, koostatud väljavõteteks, tehinguteks ja jagamiseks. Pakett kasutab kood-first lähenemisviisi, kasutades struktuure ja muid sisseehitatud andmetüüpe.
Käivitage see terminalikäsk oma töökataloogis, et lisada GORM-i pakett oma projekti sõltuvustele:
mine hankige gorm.io/gorm\n
GORM-i paketi töötamiseks vajate andmebaasi draiverit. GORM pakub populaarsete DBMS-ide jaoks andmebaasi draivereid. GORM-i installimiseks käivitage see käsk oma töökataloogis Postgres juht:
mine hankige gorm.io/driver/postgres\n
Postgresi ühendamine Go-ga, kasutades GORM-i
Importige need paketid oma Go-faili, et töötada ORM-i ja andmebaasi draiveriga. Sa kasutad logi pakett vigade logimiseks oma konsooli ja fmt pakett printimiseks.
importida (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "logi"\n)\n
Teiega ühenduse loomiseks vajate ühendusstringi Postgresi andmebaas jooksukeskkonnas. Ühendusstringi moodustavate väljade mudelina saate kasutada struktuuri. Struktuuri kasutamine muudab erinevate väärtuste muutmise ja testimise lihtsamaks, eriti sõltuvuse süstimise korral.
Siin on ühendusstringi moodustavate väljade struktuurimudeli näide:
tüüp Konfig struktuur {\n Host string\n Port string\n Parool string\n Kasutaja string\n DBName string\n SSLMode string\n}\n
Allpool on teie andmebaasiühenduse tüüpiline funktsioon. See tagastab ühenduse eksemplari ja veateate sõltuvalt ühenduse olekust.
funcUus ühendus()(*gorm. DB, viga) {\n tagasi db, null\n}\n
Saate luua ühenduse struktuuri mudeli ja täita väljad väärtustega oma Postgresi andmebaasis.
konfiguratsioonid := Config{\n Host: "andmebaas_host",\n Port: "andmebaas_port",\n Parool: "database_Password",\n Kasutaja: "andmebaas_kasutaja",\n DBName: "andmebaasi_nimi",\n SSLMrežiim: "vale",\n }\n dsn := fmt. Sprintf("host=%s port=%s kasutaja=%s parool=%s dbname=%s sslmode=%s", konfiguratsioonid. Host, konfiguratsioonid. Port, konfiguratsioonid. Kasutaja, konfiguratsioonid. Parool, konfiguratsioonid. DBName, konfiguratsioonid. SSLMode)\n
The dsn muutuja kasutab Sprintf vormindamise meetod ja Mine stringi vormindamise tegusõnad väljade ühendamiseks Konfig struct ja seadistage Postgresi ühendusstring.
Saate avada andmebaasiühenduse GORM-iga, kasutades Avatud meetod. The Avatud meetod võtab avatud ühenduse andmebaasi draiverist ja valikuliste konfiguratsioonide loendi Konfig GORM-i paketi tüüp. See tagastab ühenduse eksemplari ja valikulise vea.
db, err := gorm. Avatud (postgres. Ava (dsn), &gorm. Config{})\n kui eks!= null {\n tagasi db, viga\n }\n
Andmebaasi pingimine ühenduse oleku kontrollimiseks
Saate oma andmebaasi pingida, et kontrollida tervise-/võrguolekut funktsiooniga, mis tagastab tõeväärtusliku tulemuse või vea, kui andmebaasiühendus on kehtetu.
funcPingDb()(bool, viga) {\n \n tagasitõsi, null\n}\n
Andmebaasi pingimiseks peate looma uue ühenduse eksemplari. Siin on näide selle kasutamisest Uus ühendus funktsioon ühenduse eksemplari loomiseks:
Ühenduse eksemplar, err := NewConnection()\n kui eks!= null {\n logi. Fatalf("Andmebaasiühendus nurjus %v", eks. Viga())\n }\n
Kui olete ühenduse eksemplari hankinud, looge andmebaasi eksemplar rakendusega DB ühendamise meetod.
dbConnection, err := ühenduse eksemplar. DB()\n kui eks!= null {\n tagasivale, err\n } \n
Saate andmebaasi pingida rakendusega Ping andmebaasi eksemplari meetod. The Ping meetod tagastab kõik vead või null kui ühendus õnnestus.
\n err = dbConnection. Ping()\n kui eks!= null {\n tagasivale, eksitus\n } muidu {\n \n fmt. Println("Ühendus õnnestus")\n }\n
Eduka käitamise tulemuseks peaks olema järgmine väljund:
Saate kasutada andmebaasi / SQL-i paketti SQL-i andmebaasiga töötamiseks Go-s
The andmebaas/sql pakett on laiendatav ja kuna enamik Go andmebaasipakette ja draivereid laiendavad paketti, saate paketti oma projektides kasutada, selle asemel et valida ORM-id.
GORM pakub ka töötlemata SQL-i loomiseks SQL-i koostajat, mis on abiks toetamata toimingute puhul.