Перейти к содержимому
ГоМастер

Поиск по урокам

Найдите урок, курс, термин или раздел

pgx ~12 часов 25 уроковпрактика

Pgx в Go: полный курс по работе с PostgreSQL

PostgreSQL — база номер один в Go-бэкендах, а pgx — самый быстрый и самый используемый её драйвер: пула pgxpool достаточно, чтобы забыть о ручных соединениях, а Batch и COPY ускоряют массовые операции в разы.

Курс ведёт от первого подключения до продакшен-приёмов: сканирование строк и структур, типы Postgres (UUID, JSONB, массивы), транзакции и паттерн «с транзакцией», pgconn.PgError и коды SQLSTATE, LISTEN/NOTIFY, миграции, тесты с testcontainers. Каждый урок — реалистичный код с построчным разбором, честные грабли и интерактивные задания прямо в браузере.

Чему научитесь

Чему научитесь

  • Подключаться к PostgreSQL через pgx и pgxpool
  • Сканировать строки в структуры и справляться с NULL
  • Работать с типами Postgres: UUID, JSONB, массивы, timestamptz
  • Проводить транзакции и массовые вставки через Batch и COPY
  • Разбирать pgconn.PgError и строить свои типы ошибок
  • Тестировать код с testcontainers и pgxmock

Для кого курс

  • Backend-разработчикам, которые пишут сервисы на Go с PostgreSQL
  • Тем, кто работает через database/sql и хочет скорость pgx
  • Готовящимся к собеседованиям: SQL-слой спрашивают почти всегда

Что понадобится

  • Базовый синтаксис Go: структуры, срезы, ошибки, контекст
  • Желательно понимать SELECT и INSERT — ускорит прохождение

Программа курса: 25 уроков

  1. 1Знакомство: зачем Go-проекту pgxdatabase/sql, lib/pq и pgx: кто быстрее и почему.~16 мин · pgx golang, зачем нужен pgx
  2. 2pgx v5: установка и первое подключениеgo get, pgx.Connect, Ping и первая ошибка соединения.~18 мин · pgx подключение go, pgx connect
  3. 3Строка подключения и DSNpostgres://, параметры sslmode, env-переменные и дефолты.~16 мин · dsn postgres go, строка подключения pgx
  4. 4Пул соединений pgxpoolMaxConns, жизненный цикл коннектов, Ping перед работой, лимиты базы.~20 мин · pgxpool go, пул соединений postgres
  5. 5Exec и Query: первые запросыINSERT без результата и SELECT со строками.~18 мин · pgx query example, pgx exec
  6. 6Scan: строки, NULL и указателиsql.Null-типы, *string и ловушка пустых значений.~18 мин · pgx scan null, null postgres golang
  7. 7CollectRows и RowToStructByNameСрез структур одной строкой: магия обобщений.~20 мин · pgx collectrows, rowtostructbyname
  8. 8Плейсхолдеры $1 и SQL-инъекцииПочему Sprintf убивает базу и как правильно подставлять.~18 мин · sql инъекции go, pgx placeholders
  9. 9Интерфейс database/sql: pgx через StdLibКогда нужен абстрактный драйвер и что теряете.~16 мин · database/sql pgx, pgx stdlib
  10. 10Типы Postgres: UUID, TIMESTAMPTZ, NUMERICpgtype: какие типы Go соответствуют колонкам.~20 мин · pgtype uuid, типы postgres golang
  11. 11JSONB: гибкие данные без миграцийХранение структур и карт, запросы по JSON-полям.~20 мин · jsonb golang, jsonb postgres go
  12. 12Массивы Postgres: []string и pgtype.ArrayМногозначные колонки: когда массив лучше таблицы.~18 мин · массивы postgres go, text[] pgx
  13. 13Транзакции: Begin, Commit и RollbackАтомарные операции и откат при ошибке.~20 мин · транзакции pgx, pgx begin commit
  14. 14Паттерн «с транзакцией»: функция-обёрткаWithTx: не забываем Rollback никогда.~20 мин · withtx pattern, pgx транзакция обертка
  15. 15Контекст и таймауты запросовcontext.WithTimeout: не ждём зависший SELECT.~16 мин · pgx context timeout, таймаут запроса postgres
  16. 16Ошибки pgx: pgconn.PgErrorКоды SQLSTATE, Severity и Detail из ошибки.~18 мин · pgerror go, sqlstate коды
  17. 17Ошибка 23505: конфликты уникальностиon conflict, Upsert и дружелюбные ответы API.~18 мин · 23505 unique violation, on conflict go
  18. 18Batch: сотни запросов за один рейсpgx.Batch: отправка пачки без лишних поездок.~20 мин · pgx batch, массовые запросы go
  19. 19COPY FROM: миллионы строк за секундыCopyFrom против INSERT: бенчмарк на глазах.~20 мин · pgx copyfrom, массовая вставка postgres
  20. 20LISTEN/NOTIFY: события из базыРеактивность: уведомления вместо опроса таблицы.~20 мин · listen notify postgres go, pgx notify
  21. 21Миграции схемы: goose и golang-migrateВерсионирование базы: вверх, вниз, безопасно.~18 мин · миграции postgres go, goose migrate
  22. 22Индексы и EXPLAIN для Go-разработчикаПочему запрос тормозит и как увидеть план.~20 мин · explain postgres go, индексы postgres
  23. 23Тесты: testcontainers и pgxmockРеальная база в Docker и мок для юнит-тестов.~20 мин · testcontainers go, pgxmock
  24. 24Логирование и трассировка pgxQueryTracer: кто съел 3 секунды и какой запрос.~18 мин · pgx tracer, логи запросов postgres
  25. 25Итоговый проект: сервис заметок на pgxCRUD, поиск, теги-массивы и счётчики — целиком.~24 мин · pgx проект, crud postgres go

Вопросы о курсе

Нужен установленный PostgreSQL для курса?

Нет. Каждый запрос разбирается построчно прямо в браузере: код, план, ошибки и интерактивные задания работают без базы. Для локальной практики подойдёт Docker — команда есть в первом уроке.

Какая версия pgx разбирается?

pgx v5 — актуальная мажорная версия: pgxpool, CollectRows, pgtype и RowToStructByName появились именно в ней. Отличия от v4 проговариваются там, где важно.

Почему pgx, а не GORM или sqlc?

pgx — слой под ними всеми. Понимая драйвер, вы понимаете, что делает ORM, где он тормозит и почему сгенерированный sqlc-код в итоге компилируется в вызовы pgx.