Ответ
Для работы с PostgreSQL в Go используется стандартный интерфейс database/sql в связке со сторонним драйвером. Основные драйверы — это pgx и lib/pq.
pgx — современный и наиболее рекомендуемый драйвер.
- Преимущества: Высокая производительность, активная разработка, полная поддержка типов данных PostgreSQL (JSONB, массивы, hstore), а также возможность работы как через нативный интерфейс, так и в качестве драйвера для
database/sql. - Рекомендация: Является стандартом де-факто для новых проектов.
// Использование pgx с database/sql (рекомендуемый подход)
import (
"database/sql"
_ "github.com/jackc/pgx/v5/stdlib"
)
func main() {
db, err := sql.Open("pgx", "postgres://user:password@localhost:5432/database_name")
if err != nil {
// handle error
}
defer db.Close()
}lib/pq — более старый и широко известный драйвер.
- Особенности: Стабильный и простой, но находится в режиме поддержки (новые функции не добавляются). Уступает
pgxв производительности и поддержке специфичных для PostgreSQL возможностей. - Рекомендация: Подходит для поддержки старых проектов, но для новых лучше выбрать
pgx.
import (
"database/sql"
_ "github.com/lib/pq"
)
func main() {
db, err := sql.Open("postgres", "postgres://user:password@localhost:5432/database_name?sslmode=disable")
if err != nil {
// handle error
}
defer db.Close()
}Итог: Для новых приложений всегда выбирайте pgx из-за его производительности, функциональности и активной поддержки.