Постгрес Голанг

Postgres Golang



Часто называемый Golang, Go — это язык программирования с открытым исходным кодом, скомпилированный и статически типизированный, созданный Google. Он создан, чтобы быть простым для понимания, быстрым, четким и высокопроизводительным.

PostgreSQL, часто называемый просто Postgres, представляет собой мощную систему объектно-реляционных баз данных с открытым исходным кодом. За более чем 30 лет активной разработки он завоевал прочную репутацию благодаря своей надежности, расширенным функциям и полному соответствию стандартам.

Он предназначен для обработки обширных рабочих нагрузок, от отдельных компьютеров до хранилищ данных или веб-служб с множеством одновременных пользователей. Он обеспечивает целостность и надежность транзакций, поддерживает различные расширенные типы данных и мощный гибкий язык манипулирования данными.







В этом руководстве мы научимся настраивать и подключать сервер PostgreSQL к приложению Go.



Требования:

Перейти на язык программирования - Это гарантирует, что компилятор Go установлен на вашем компьютере.



База данных PostgreSQL - Вам также необходимо установить PostgreSQL. Вы можете установить его прямо на свой компьютер или использовать контейнер Docker для более простой настройки.





Инструменты разработки – Интегрированная среда разработки (IDE), которая поддерживает Go, например Visual Studio Code, GoLand и т. д.

Базовые знания SQL и Go – Чтобы взаимодействовать с базой данных PostgreSQL, вы должны понимать язык SQL и различные запросы, которые вам необходимо выполнять. Вам также необходимо базовое понимание языка Go.



При выполнении данных требований мы можем перейти к следующим шагам.

Настройка проекта

Давайте начнем с настройки структуры каталогов нашего проекта. Создайте основной каталог, в котором вам нужно хранить исходный код проекта.

$ мкдир golang_postgres

Перейдите в каталог и инициализируйте новый модуль Go.

$ CD golang_postgres && иди мод инициализируй главное

Установите необходимые драйверы

Для взаимодействия с базой данных PostgreSQL нам понадобится драйвер PostgreSQL для языка программирования Go.

В этом руководстве мы используем драйвер pq, который предлагает широкий набор функций для работы с базой данных PostgreSQL.

Вы можете установить его, выполнив следующую команду:

зайди на github.com / библиотека / pq

Создать базу данных

Следующим шагом будет создание новой базы данных PostgreSQL. Опять же, мы можем сделать это в оболочке PostgreSQL.

$ psql постгрес

Эта команда запрашивает у вас пароль файла postgres. После входа в систему запустите команду «создать базу данных», чтобы инициализировать новую базу данных:

postgres=# создать базу данных golang;
СОЗДАТЬ БАЗУ ДАННЫХ

Данная команда создает новую базу данных под названием «golang». Не стесняйтесь заменить имя базы данных на желаемое имя.

Затем вы можете убедиться, что база данных создана успешно, подключившись к ней.

postgres=# \c golang;
Теперь вы подключены к базе данных 'golang' как пользователь 'postgres'.

Затем настройте таблицу, в которой вы хотите хранить данные. Для этого руководства мы создадим простую таблицу, в которой хранится информация о сеансе.

СОЗДАТЬ ТАБЛИЦУ db_clients (
ID ПОСЛЕДОВАТЕЛЬНЫЙ ПЕРВИЧНЫЙ КЛЮЧ,
имя VARCHAR(100) НЕ NULL,
session_time TIMESTAMP NOT NULL,
number_of_queries INT ПО УМОЛЧАНИЮ 0,
active_state BOOLEAN ПО УМОЛЧАНИЮ FALSE
);

Данный запрос должен создать новую таблицу с именем «db_clients», в которой хранится информация о клиентах, зарегистрированных на данном сервере базы данных.

Подключите приложение Go к PostgreSQL

После того, как мы настроим базу данных и таблицу базы данных, мы можем продолжить и узнать, как подключить наше приложение Go к серверу PostgreSQL.

Начните с создания файла «main.go» в корне вашего проекта:

$ трогать main.go

Затем отредактируйте файл в выбранном вами текстовом редакторе:

$ потому что main.go

В файл «main.go» добавьте исходный код, как показано ниже:

основной пакет

Импортировать (
'база данных/sql'
'ФМТ'
'бревно'

_ 'github.com/lib/pq'
)

основная функция ( ) {
коннстр := 'postgres://postgres:пароль@localhost/golang?sslmode=disable'
БД, ошибка := sql.Open ( 'постгрес' , коннстр )
если ошибаться ! = ноль {
лог. Фатальный ( ошибаться )
}

если ошибка = дб.Ping ( ) ; ошибаться ! = ноль {
лог. Фатальный ( ошибаться )
}

fmt.Println ( 'Подключен к базе данных' )
}

В предыдущем коде мы начинаем с импорта необходимых модулей. Затем мы определяем основную функцию. Наконец, в основной функции мы определяем строку подключения, которая позволяет нам указать целевой хост, пользователя базы данных, пароль базы данных и фактическую целевую базу данных.

Модуль поддерживает следующие параметры в строке подключения:

  • dbname — имя базы данных для подключения.
  • user — пользователь, под которым выполняется вход.
  • пароль – пароль пользователя.
  • host — Хост, к которому нужно подключиться. Значения, начинающиеся с «/», относятся к сокетам домена Unix (по умолчанию — localhost).
  • порт — порт для привязки (по умолчанию 5432).
  • sslmode — использовать или нет SSL (по умолчанию требуется; это не по умолчанию для libpq).
  • fallback_application_name — имя_приложения, к которому можно вернуться, если оно не указано.
  • connect_timeout — максимальное время ожидания соединения в секундах. Нулевой или не указанный означает бесконечное ожидание.
  • sslcert — расположение файла сертификата. Файл должен содержать данные в кодировке PEM.
  • sslkey — расположение файла ключа. Файл должен содержать данные в кодировке PEM.
  • sslrootcert — расположение файла корневого сертификата. Файл должен содержать данные в кодировке PEM.

При необходимости вы можете настроить свойства целевого соединения. Чтобы настроить SSL и принятые параметры SSLMode, ознакомьтесь с нашим руководством по https://linuxhint.com/postgres-sslmode .

Удовлетворившись свойствами соединения, вы можете запустить предыдущий код, чтобы проверить, установлено ли соединение.

беги .\main.go

При подключении вы должны получить следующий вывод:

Подключено к базе данных

PostgreSQL вставляет данные в таблицу

Следующим шагом будет вставка данных образца в таблицу, которую мы создали ранее. Мы можем сделать это, определив запросы на вставку как строковый литерал, а затем используя функцию db.Exec() для запуска целевого запроса.

Код выглядит следующим образом:

---
insertStatement := `ВСТАВИТЬ В db_clients (имя, время сеанса, количество_запросов, активное_состояние)
ЦЕННОСТИ
('psql', '2023-05-26 10:15:00', 10, правда),
('datagrip', '2023-05-26 09:30:00', 5, правда),
('dbeaver', '2023-05-26 11:00:00', 20, правда),
('верстак', '2023-05-26 14:45:00', 15, ложь),
('remote', '2023-05-26 13:20:00', 8, правда);`

_, ошибка = db.Exec(insertStatement)
если ошибка != ноль {
log.Fatal(ошибка)
}

Если вы запустите предыдущий код, он должен вставить указанные записи в целевую таблицу.

Данные запроса PostgreSQL

Чтобы запросить строки из таблицы, мы можем определить оператор select как строку и использовать db.Query() для его запуска. Мы можем перебирать строки таблицы с помощью функции Next() и распечатывать их, как показано ниже:

строки, ошибка := db.Query ( 'ВЫБЕРИТЕ * ИЗ db_clients' )
если ошибаться ! = ноль {
лог. Фатальный ( ошибаться )
}
отложить строки.Закрыть ( )

для строки.Далее ( ) {
был идентификатор инт
строка имени переменной
var sessionTime time.Time
var numberOfQueries int
var activeState bool

ошибка := строки.Сканировать ( & идентификатор , & имя, & время сеанса, & количество запросов, & активное состояние )
если ошибаться ! = ноль {
лог. Фатальный ( ошибаться )
}

fmt.Printf ( 'ID: %d, имя: %s, время сеанса: %s, количество запросов: %d, активное состояние: %t \n ' , идентификатор , имя, время сеанса, количество запросов, активное состояние )
}

если ошибка = строки.Ошибка ( ) ; ошибаться ! = ноль {
лог. Фатальный ( ошибаться )
}

Как только мы запустим предыдущий код, он должен напечатать все строки из таблицы db_clients, как показано в следующем примере вывода:

Вот оно!

Заключение

Мы рассмотрели, как можно использовать пакет pq для подключения и запроса базы данных PostgreSQL с помощью Golang.