Kumonekta sa isang Postgres Database sa Your Go Application With GORM

Kumonekta sa isang Postgres Database sa Your Go Application With GORM
Ang mga mambabasang tulad mo ay tumutulong sa pagsuporta sa MUO. Kapag bumili ka gamit ang mga link sa aming site, maaari kaming makakuha ng isang affiliate na komisyon. Magbasa pa.

Ang Postgres ay isa sa mga sikat na database ng SQL dahil sa maraming mga tampok nito at kadalian ng paggamit. Ang Postgres ay ACID-compliant sa mga feature tulad ng Multi-Version Concurrency Control, async replication, nested transactions, at write-ahead logging. Kasama ng marami pang iba, ginagawa ng mga feature na ito ang Postgres bilang go-to SQL database management system.





Ang Go ecosystem ay tahanan ng maraming pakete para sa pakikipag-ugnayan sa iba't ibang DBMS, kabilang ang Postgres. Nagbibigay ang Go ng built-in database/sql package para sa pagtatrabaho sa mga database ng SQL gamit ang mga driver ng database. Gamit ang mga istruktura ng data ng Go, maaari mong isama ang mga sikat na third-party na ORM tulad ng GORM para sa madaling pakikipag-ugnayan sa iyong database.





Pagsisimula Sa GORM at Postgres

  ang homepage ng GORM

Ang pakete ng GORM ay isa sa mga pinakasikat na ORM sa Go ecosystem dahil ito ay developer-friendly, feature-rich, at build on ang database/sql pakete .





Nagbibigay ang GORM ng functionality para sa mga auto migration, pag-log, mga inihandang statement, transaksyon, at sharding. Kinukuha ng package ang code-first approach gamit ang mga struct at iba pang built-in na uri ng data.

Patakbuhin ang terminal command na ito sa iyong gumaganang direktoryo upang idagdag ang GORM package sa mga dependency ng iyong proyekto:



 go get gorm.io/gorm\n

Kakailanganin mo ng driver ng database para gumana ang GORM package. Nagbibigay ang GORM ng mga driver ng database para sa sikat na DBMS. Patakbuhin ang command na ito sa iyong gumaganang direktoryo upang i-install ang GORM Mga postgres driver:

 go get gorm.io/driver/postgres\n

Pagkonekta ng mga Postgres Sa Go Gamit ang GORM

I-import ang mga package na ito sa iyong Go file para gumana sa ORM at database driver. Gagamitin mo ang log package upang mag-log ng mga error sa iyong console at sa fmt pakete upang i-print ang output.





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

Kakailanganin mo ng isang string ng koneksyon upang kumonekta sa iyong Postgres database sa tumatakbong kapaligiran. Maaari kang gumamit ng struct bilang modelo para sa mga field na bumubuo sa string ng koneksyon. Ang paggamit ng isang struct ay ginagawang mas madaling baguhin at subukan ang iba't ibang mga halaga, lalo na sa mga kaso ng dependency injection.

Narito ang isang halimbawang modelo ng struct para sa mga field na bumubuo sa string ng koneksyon:





 type Config struct {\n Host string\n Port string\n Password string\n User string\n DBName string\n SSLMode string\n}\n

Nasa ibaba ang isang tipikal na function para sa iyong koneksyon sa database. Ibinabalik nito ang instance ng koneksyon at isang error depende sa status ng koneksyon.

 func NewConnection() (*gorm.DB, error) {\n return db, nil\n}\n

Maaari mong i-instantiate ang modelo ng struct ng koneksyon at punan ang mga patlang ng mga halaga sa iyong database ng Postgres.

     configurations := Config{\n Host: "database_Host",\n Port: "database_Port",\n Password: "database_Password",\n User: "database_User",\n DBName: "database_Name",\n SSLMode: "false",\n }\n dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", configurations.Host, configurations.Port, configurations.User, configurations.Password, configurations.DBName, configurations.SSLMode)\n

Ang dsn variable ay gumagamit ng Sprintf paraan ng pag-format at Pumunta sa pag-format ng string ng mga pandiwa upang pagdugtungin ang mga patlang ng Config struct at i-set up ang string ng koneksyon ng Postgres.

Maaari kang magbukas ng koneksyon sa database sa GORM gamit ang Bukas paraan. Ang Bukas pamamaraan ay tumatagal ng isang bukas na koneksyon mula sa isang database driver at isang listahan ng mga opsyonal na configuration mula sa Config uri ng pakete ng GORM. Nagbabalik ito ng instance ng koneksyon at isang opsyonal na error.

     db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})\n if err != nil {\n return db, err\n }\n

Pining ang Database para I-verify ang Status ng Koneksyon

Maaari mong i-ping ang iyong database upang i-verify ang katayuan sa kalusugan/online gamit ang isang function na nagbabalik ng boolean na resulta o isang error kung ang koneksyon sa database ay hindi wasto.

 func PingDb() (bool, error) {\n \n return true, nil\n}\n

Kakailanganin mong gumawa ng bagong instance ng koneksyon para i-ping ang database. Narito ang isang halimbawa gamit ang Bagong Koneksyon function upang lumikha ng isang halimbawa ng koneksyon:

kung paano suriin kung anong motherboard ang mayroon ka
     connectionInstance, err := NewConnection()\n if err != nil {\n log.Fatalf("The database connection failed %v", err.Error())\n }\n

Kapag nakakuha ka ng isang instance ng koneksyon, lumikha ng isang instance ng database gamit ang DB paraan ng koneksyon.

     dbConnection, err := connectionInstance.DB()\n if err != nil {\n return false, err\n } \n

Maaari mong i-ping ang database gamit ang Ping paraan ng halimbawa ng database. Ang Ping paraan ay nagbabalik ng anumang mga error o wala kung matagumpay ang koneksyon.

 \n err = dbConnection.Ping()\n if err != nil {\n return false, err\n } else {\n \n fmt.Println("The connection was successful")\n }\n

Ang isang matagumpay na pagtakbo ay dapat magresulta sa output na katulad nito:

  matagumpay na output ng koneksyon

Maari Mong Gamitin ang database/sql Package para Makipagtulungan sa SQL Database sa Go

Ang database/sql package ay extendable, at dahil karamihan sa mga Go database package at driver ay nagpapalawak ng package, maaari mong gamitin ang package sa iyong mga proyekto sa halip na mag-opt para sa mga ORM.

Nagbibigay din ang GORM ng SQL builder para sa pagbuo ng raw SQL, na nakakatulong para sa mga hindi sinusuportahang operasyon.