1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bluse-sql-pg

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 3.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 21:00 f0cb63e

Для golang database/sql используется PostgreSQL-драйвер.

GoDoc: https://godoc.org/github.com/blusewang/pg?status.svg

Лицензия: https://github.com/blusewang/pg/blob/master/LICENSE

Поддержка версий Go:

  • Go 1.11x;
  • Go 1.13x;
  • Go 1.17x.

Статус FOSSA: https://app.fossa.io/projects/git+github.com/blusewang/pg?ref=badge_shield

Поддержка версий PostgreSQL:

  • PostgreSQL 10.5;
  • PostgreSQL 11.4;
  • PostgreSQL 12.0;
  • PostgreSQL 13.0;
  • PostgreSQL 14.0.

Установка

go get github.com/blusewang/pg

Использование

Общий запрос

db, err := sql.Open(pg.DriverName, "pg://user:password@dbhost.yourdomain.com/database_name?application_name=app_name&sslmode=verify-full")
if err != nil {
return err
}
defer db.Close()
rows, err := db.Query("select * from bluse where id>$1", 0)
if err != nil {
return err
}
...

Асинхронная подписка

md, err := dsn.ParseDSN("pg://user:password@dbhost.yourdomain.com/database_name?application_name=app_name&sslmode=verify-full")
if err != nil {
return
}
c, err := pg.New(context.Background(), md)
if err != nil {
return
}
_, err = c.QueryNoArgs("listen abc")
if err != nil {
_ = c.Terminate()
return
}
for {
n, ok := <-c.NotifyChan
if !ok {
log.Println(c.IOError)
return
}
log.Println(n.Condition, n.Text)
}

Документация

Дополнительные сведения и примеры использования см.: https://pkg.go.dev/github.com/blusewang/pg.

Особенности

  • Scan() позволяет передавать указатели, что идеально соответствует null в базе данных.
  • Все запросы автоматически подготавливаются и кэшируются.
  • Поддерживается URI с префиксом pg://.
  • Поддерживает асинхронное сообщение подписки типа Listen.

Требования к конфигурации

  • В конфигурации необходимо установить одинаковые значения для sql.SetMaxIdleConns(x) и sql.SetMaxOpenConns(x), чтобы кэш работал эффективно.

Реализация протокола

  • Этот драйвер предназначен для веб-сервисов.
Состояние Функция Примечание
[x] Запуск Поддержка: без пароля, пароль в открытом виде, md5, SCRAM-SHA-256
[x] Простой запрос Обязательная
[x] Расширенный запрос Обязательная
[x] Отмена текущего запроса Обязательная
[x] Завершение Обязательная
[x] SSL-шифрование сеанса Безопасность удалённого доступа
[x] Асинхронный режим listen/notify

SCRAM-SHA-256-PLUS не поддерживается. Если pg_hba.conf использует:

hostssl all             all             0.0.0.0/0               scram-sha-256 clientcert=verify-full

то сервер будет отправлять запросы типа SCRAM-SHA-256-PLUS. В этом случае клиент автоматически понизит уровень до SCRAM-SHA-256.

Лицензия

FOSSA Status

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/bluse-sql-pg.git
git@api.gitlife.ru:oschina-mirror/bluse-sql-pg.git
oschina-mirror
bluse-sql-pg
bluse-sql-pg
master