Postgres е една от популярните SQL бази данни поради многото си функции и лекота на използване. Postgres е ACID-съвместим с функции като Multi-Version Concurrency Control, асинхронна репликация, вложени транзакции и регистриране за предварително записване. Заедно с много други, тези функции правят Postgres системата за управление на SQL база данни.
Екосистемата Go е дом на много пакети за взаимодействие с различни СУБД, включително Postgres. Go предоставя вграденото база данни/sql пакет за работа с SQL бази данни с помощта на драйвери за бази данни. Използвайки Go структури от данни, можете да интегрирате популярни ORM на трети страни като GORM за лесно взаимодействие с вашата база данни.
Първи стъпки с GORM и Postgres
Пакетът GORM е един от най-популярните ORM в екосистемата Go, защото е удобен за разработчици, богат на функции и се основава на на база данни/sql пакет.
GORM предоставя функционалност за автоматични миграции, регистриране, подготвени отчети, транзакции и шардинг. Пакетът използва подхода на първо място с код, използвайки структури и други вградени типове данни.
Изпълнете тази терминална команда във вашата работна директория, за да добавите пакета GORM към зависимостите на вашия проект:
отивам вземете gorm.io/gorm\n
Ще ви е необходим драйвер за база данни, за да работите с пакета GORM. GORM предоставя драйвери за бази данни за популярни СУБД. Изпълнете тази команда във вашата работна директория, за да инсталирате GORM Postgres шофьор:
отивам вземете gorm.io/driver/postgres\n
Свързване на Postgres с Go чрез GORM
Импортирайте тези пакети във вашия Go файл, за да работите с ORM и драйвера на базата данни. Ще използвате дневник пакет за регистриране на грешки във вашата конзола и fmt пакет за изход за печат.
импортиране (\н "fmt"\н "gorm.io/driver/postgres"\н "gorm.io/gorm"\н "дневник"\n)\n
Ще ви е необходим низ за свързване, за да се свържете с вашия Postgres база данни в среда за бягане. Можете да използвате структура като модел за полетата, които съставят низа за свързване. Използването на структура улеснява промяната и тестването на различни стойности, особено в случаите на инжектиране на зависимости.
Ето примерен структурен модел за полетата, които съставляват низа за връзка:
Тип Конфиг структура {\n Хост низ\n Порт низ\n Парола низ\n Потребител низ\n Име на DB низ\n SSLMode низ\n}\n
По-долу е типична функция за вашата връзка с база данни. Той връща екземпляра на връзката и грешка в зависимост от състоянието на връзката.
функНова връзка()(*горм. DB, грешка) {\н връщане db, нула\n}\n
Можете да създадете модел на структура на връзката и да попълните полетата със стойностите във вашата база данни на Postgres.
конфигурации := Config{\n Хост: "база_данни_хост",\n Порт: "база_данни_порт",\n Парола: "база_данни_парола",\n Потребител: "database_User",\n DBName: "име_база_данни",\n SSLMode: "фалшив",\n }\n dsn := fmt. Sprintf("хост=%s порт=%s потребител=%s парола=%s dbname=%s sslmode=%s", конфигурации. Хост, конфигурации. Порт, конфигурации. Потребител, конфигурации. Парола, конфигурации. DBName, конфигурации. SSLMode)\n
The dsn променливата използва Sprintf метод на форматиране и Глаголи за форматиране на низове за свързване на полетата на Конфиг struct и настройте низа за свързване на Postgres.
Можете да отворите връзка с база данни с GORM, като използвате Отворете метод. The Отворете методът приема отворена връзка от драйвер на база данни и списък с незадължителни конфигурации от Конфиг тип пакет GORM. Той връща екземпляр на връзка и незадължителна грешка.
db, err := gorm. Отворете (postgres. Отворете (dsn), &горм. Конфигурация{})\n ако грешка!= нула {\н връщане db, грешка\n }\n
Пинг на базата данни за проверка на състоянието на връзката
Можете да пингвате вашата база данни, за да проверите изправното/онлайн състояние с функция, която връща булев резултат или грешка, ако връзката с базата данни е невалидна.
функPingDB()(bool, грешка) {\n \n връщаневярно, нула\n}\n
Ще трябва да създадете нов екземпляр на връзка, за да пингвате базата данни. Ето един пример за използване на Нова връзка функция за създаване на екземпляр на връзка:
ConnectionInstance, err := NewConnection()\n ако грешка!= нула {\n дневник. фаталф(„Връзката с базата данни е неуспешна %v“, грешка Грешка())\n }\n
След като получите екземпляр за връзка, създайте екземпляр на база данни с DB метод на свързване.
dbConnection, err := ConnectionInstance. DB()\n ако грешка!= нула {\н връщаненевярно, грешка\n } \n
Можете да пингвате базата данни с Пинг метод на екземпляра на базата данни. The Пинг метод връща всички грешки или нула ако връзката е била успешна.
\n грешка = dbConnection. Ping()\n ако грешка!= нула {\н връщаненевярно, грешка\n } друго {\n \n fmt. Println(„Връзката беше успешна“)\n }\n
Успешното изпълнение трябва да доведе до резултат, подобен на този:
Можете да използвате пакета база данни/sql за работа със SQL база данни в Go
The база данни/sql пакетът може да се разшири и тъй като повечето пакети и драйвери за база данни на Go разширяват пакета, можете да използвате пакета във вашите проекти, вместо да избирате ORM.
GORM също така предоставя SQL builder за изграждане на необработен SQL, който е полезен за неподдържани операции.