Postgres Golang

Postgres Golang



Често наричан Golang, Go е език за програмиране, който е с отворен код, компилиран и статично въведен, създаден от Google. Създаден е да бъде лесен за разбиране, бърз, ясен и с висока производителност.

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

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







Този урок ни учи как да конфигурираме и свързваме PostgreSQL сървър с Go приложение.



Изисквания:

Go език за програмиране – Гарантира, че компилаторът Go е инсталиран на вашата машина.



PostgreSQL база данни – Трябва също така да имате инсталиран PostgreSQL. Можете да го инсталирате директно на вашата машина или да използвате Docker контейнер за по-ясна настройка.





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

Основни познания по SQL и Go – За да взаимодействате с базата данни на PostgreSQL, трябва да разбирате SQL и различните заявки, които трябва да изпълните. Нуждаете се и от основно разбиране на езика Go.



При изпълнение на зададените изисквания можем да продължим към следните стъпки.

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

Нека започнем, като настроим структурата на нашата директория на проекта. Създайте основната директория, където трябва да съхранявате изходния код на проекта.

$ mkdir golang_postgres

Отидете в директорията и инициализирайте нов Go модул.

$ cd golang_postgres && go mod init main

Инсталирайте необходимите драйвери

За да взаимодействаме с базата данни PostgreSQL, се нуждаем от PostgreSQL драйвер за езика за програмиране Go.

За този урок използваме драйвера pq, който предлага широк набор от функции за работа с базата данни PostgreSQL.

Можете да го инсталирате, като изпълните следната команда:

вземете github.com / либ / pq

Създаване на база данни

Следващата стъпка е да създадете нова база данни PostgreSQL. Отново можем да направим това в обвивката на PostgreSQL.

$ psql -IN postgres

Тази команда ви подканва да въведете паролата на postgres. След като влезете, изпълнете командата „създайте база данни“, за да инициализирате нова база данни:

postgres=# създаване на база данни golang;
СЪЗДАВАНЕ НА БАЗА ДАННИ

Дадената команда създава нова база данни, наречена „golang“. Чувствайте се свободни да замените името на базата данни с желаното от вас име.

След това можете да проверите дали базата данни е създадена успешно, като се свържете с нея.

postgres=# \c golang;
Вече сте свързани към базата данни 'golang' като потребител 'postgres'.

След това настройте таблицата, където искате да съхранявате данните. Създаваме проста таблица за този урок, която съхранява информацията за сесията.

CREATE TABLE db_clients (
id SERIAL PRIMARY KEY,
име VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
number_of_queries INT ПО ПОДРАЗБИРАНЕ 0,
активно_състояние ЛОГИЧНО ПО ПОДРАЗБИРАНЕ ГРЕШНО
);

Дадената заявка трябва да създаде нова таблица, наречена „db_clients“, която съхранява информация за клиентите, които са влезли в даден сървър на база данни.

Свържете приложението Go с PostgreSQL

След като настроим базата данни и таблицата на базата данни, можем да продължим и да научим как да свържем нашето Go приложение със сървъра PostgreSQL.

Започнете със създаване на файл „main.go“ в корена на вашия проект:

$ докосване main.go

След това редактирайте файла с избрания от вас текстов редактор:

$ защото main.go

Във файла „main.go“ добавете изходния код, както е показано по-долу:

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

импортиране (
'база данни/sql'
'fmt'
'дневник'

_ 'github.com/lib/pq'
)

основна функция ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Open ( 'postgres' , connStr )
ако грешка ! = нула {
лог.Фатално ( грешка )
}

ако грешка = db.Ping ( ) ; грешка ! = нула {
лог.Фатално ( грешка )
}

fmt.Println ( „Свързан с база данни“ )
}

В предишния код започваме с импортиране на необходимите модули. След това дефинираме основната функция. И накрая, в основната функция дефинираме низа за връзка, който ни позволява да посочим целевия хост, потребителя на базата данни, паролата на базата данни и действителната целева база данни.

Модулът поддържа следните параметри в низа за връзка:

  • dbname – името на базата данни, към която да се свържете.
  • потребител – Потребителят, който да влезе като.
  • парола – паролата на потребителя.
  • хост – Хостът, към който да се свържете. Стойностите, които започват с “/” са за 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 := `INSERT INTO db_clients (име, session_time, number_of_queries, active_state)
СТОЙНОСТИ
('psql', '2023-05-26 10:15:00', 10, вярно),
('datagrip', '2023-05-26 09:30:00', 5, вярно),
('dbeaver', '2023-05-26 11:00:00', 20, true),
('workbench', '2023-05-26 14:45:00', 15, false),
('remote', '2023-05-26 13:20:00', 8, true);`

_, грешка = db.Exec(insertStatement)
if err != nil {
log.Fatal(err)
}

Ако изпълните предишния код, той трябва да вмъкне посочените записи в целевата таблица.

Данни за заявка на PostgreSQL

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

редове, грешка := db.Query ( 'ИЗБЕРЕТЕ * ОТ db_clients' )
ако грешка ! = нула {
лог.Фатално ( грешка )
}
отложи редове. Затвори ( )

за редове.Напред ( ) {
беше документ за самоличност вътр
низ от име на променлива
var sessionTime time.Time
var numberOfQueries int
var activeState bool

грешка := редове.Сканиране ( и документ за самоличност , и име, и време на сесията, и numberOfQueries, и активно състояние )
ако грешка ! = нула {
лог.Фатално ( грешка )
}

fmt.Printf ( „ИД: %d, име: %s, време на сесия: %s, брой заявки: %d, активно състояние: %t ' , документ за самоличност , име, sessionTime, numberOfQueries, activeState )
}

ако грешка = редове. Грешка ( ) ; грешка ! = нула {
лог.Фатално ( грешка )
}

След като изпълним предишния код, той трябва да отпечата всички редове от таблицата db_clients, както е показано в следния примерен изход:

Ето го!

Заключение

Проучихме как можем да използваме пакета pq за свързване и запитване към базата данни на PostgreSQL с помощта на Golang.