Postgres — одна из популярных баз данных SQL благодаря множеству функций и простоте использования. Postgres совместим с ACID благодаря таким функциям, как управление параллелизмом нескольких версий, асинхронная репликация, вложенные транзакции и ведение журнала с упреждающей записью. Наряду со многими другими, эти функции делают Postgres идеальной системой управления базами данных SQL.
Экосистема Go содержит множество пакетов для взаимодействия с различными СУБД, включая Postgres. Go предоставляет встроенный база данных/sql пакет для работы с базами данных SQL с использованием драйверов баз данных. Используя структуры данных Go, вы можете интегрировать популярные сторонние ORM, такие как GORM, для удобного взаимодействия с вашей базой данных.
Начало работы с GORM и Postgres
Пакет ГОРМ — одна из самых популярных ORM в экосистеме Go, потому что она удобна для разработчиков, многофункциональна и основана на
в база данных/sql упаковка.GORM предоставляет функциональные возможности для автоматической миграции, ведения журналов, подготовленных операторов, транзакций и сегментирования. Пакет использует подход «сначала код» с использованием структур и других встроенных типов данных.
Запустите эту команду терминала в своем рабочем каталоге, чтобы добавить пакет GORM в зависимости вашего проекта:
идти получить gorm.io/gorm\n
Вам понадобится драйвер базы данных для работы с пакетом GORM. GORM предоставляет драйверы баз данных для популярных СУБД. Запустите эту команду в своем рабочем каталоге, чтобы установить GORM. Постгрес Водитель:
идти получить gorm.io/driver/postgres\n
Подключение Postgres к Go с помощью GORM
Импортируйте эти пакеты в свой файл Go, чтобы работать с ORM и драйвером базы данных. Вы будете использовать бревно пакет для регистрации ошибок на вашей консоли и ФМТ пакет для вывода на печать.
Импортировать (\n "ФМТ"\n "gorm.io/драйвер/постгрес"\n "горм.ио/горм"\n "бревно"\n)\n
Вам потребуется строка подключения для подключения к База данных Postgres в беговой среде. Вы можете использовать структуру в качестве модели для полей, составляющих строку подключения. Использование структуры упрощает изменение и тестирование различных значений, особенно в случаях внедрения зависимостей.
Вот пример структурной модели для полей, составляющих строку подключения:
тип Конфигурация структура {\ п Хост нить\n Порт нить\n Пароль нить\n Пользователь нить\n Имя БД нить\n SSL-режим нить\n}\n
Ниже приведена типичная функция для вашего подключения к базе данных. Он возвращает экземпляр соединения и ошибку в зависимости от состояния соединения.
функцияНовоеПодключение()(*горм. БД, ошибка) {\ п возвращаться дБ, ноль\n}\n
Вы можете создать экземпляр модели структуры соединения и заполнить поля значениями в базе данных Postgres.
конфигурации := Config{\n Хост: "база_хост",\n Порт: "база_порт_базы",\n Пароль: "база данных_пароль",\n Пользователь: "пользователь_базы_данных",\n Имя БД: "имя_базы_данных",\nРежим SSL: "ЛОЖЬ",\n }\n dsn := fmt. Спринтф("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", конфигурации. Хост, конфигурации. Порт, конфигурации. Пользователь, конфигурации. Пароль, конфигурации. Имя БД, конфигурации. SSLMode)\n
дсн переменная использует Спринтф метод форматирования и Глаголы форматирования строки Go чтобы объединить поля Конфигурация struct и настройте строку подключения Postgres.
Вы можете открыть соединение с базой данных с GORM, используя команду Открыть метод. Открыть Метод принимает открытое соединение от драйвера базы данных и список дополнительных конфигураций из Конфигурация тип пакета GORM. Он возвращает экземпляр соединения и необязательную ошибку.
db, err := горм. Открыть (постгрес. Открыть (dsn), &горм. Конфигурация{})\n если ошибся != ноль {\ п возвращаться дб, ошибка\n }\n
Проверка связи с базой данных для проверки состояния подключения
Вы можете пропинговать свою базу данных, чтобы проверить состояние работоспособности / онлайн-статуса с помощью функции, которая возвращает логический результат или ошибку, если соединение с базой данных недействительно.
функцияПингДб()(логический, ошибка) {\ п \ п возвращатьсяистинный, ноль\n}\n
Вам нужно будет создать новый экземпляр подключения для проверки связи с базой данных. Вот пример с использованием НовоеПодключение функция для создания экземпляра соединения:
экземпляр соединения, ошибка := NewConnection()\n если ошибся != ноль {\n лог. Фатальф("Сбой подключения к базе данных %v", ошибся. Ошибка())\n }\n
Получив экземпляр соединения, создайте экземпляр базы данных с БД способ подключения.
dbConnection, ошибка: = экземпляр соединения. БД()\n если ошибся != ноль {\ п возвращатьсяЛОЖЬ, ошибка\n } \n
Вы можете пропинговать базу данных с помощью пинг метод экземпляра базы данных. пинг метод возвращает любые ошибки или ноль если подключение прошло успешно.
\n ошибка = соединение с базой данных. Пинг()\n если ошибся != ноль {\ п возвращатьсяЛОЖЬ, ошибка\n } еще {\ п \ п фмт. Распечатать("Соединение прошло успешно")\n }\n
Успешный запуск должен привести к выводу, подобному этому:
Вы можете использовать пакет database/sql для работы с базой данных SQL в Go
база данных/sql пакет является расширяемым, и поскольку большинство пакетов и драйверов баз данных Go расширяют пакет, вы можете использовать пакет в своих проектах вместо выбора ORM.
GORM также предоставляет построитель SQL для создания необработанного SQL, что полезно для неподдерживаемых операций.