Гид по технологиям

Как подключить Python к PostgreSQL

6 min read Databases Обновлено 26 Apr 2026
Как подключить Python к PostgreSQL
Как подключить Python к PostgreSQL

Логотип PostgreSQL — синий силуэт головы слона на экране ноутбука

Быстрые ссылки

  • Скачать и установить PostgreSQL
  • Установить требуемую библиотеку
  • Получить учётные данные через pgAdmin4
  • Подключиться к серверу Postgres
  • Как создать базу данных Postgres
  • Как удалить базу данных Postgres

Короткое содержание

  • Скачайте и установите PostgreSQL для вашей ОС, затем используйте psycopg2 для подключения из Python.
  • Получите параметры сервера (host, port, user) через pgAdmin4 или из провайдера хостинга.
  • Выполняйте CREATE DATABASE и DROP DATABASE через cursor.execute() в Python; в продакшне используйте обработку ошибок и безопасное хранение паролей.

Введение

Если ваше Python‑приложение должно работать с данными в PostgreSQL, нужно установить соединение между приложением и сервером базы данных. После установления соединения вы можете выполнять запросы, получать и сохранять данные.

Ниже — практическое руководство: установка, получение учётных данных в pgAdmin4, подключение через psycopg2, создание и удаление баз данных, плюс советы по безопасности, тестам и отладке.

Скачать и установить PostgreSQL

PostgreSQL доступен для Windows, macOS и дистрибутивов Linux (включая Ubuntu). Скачайте установщик с официального сайта или используйте менеджер пакетов вашей ОС.

Примеры:

Важно: версия сервера и клиентских библиотек должна быть совместима с вашими драйверами и ORM (если используете SQLAlchemy). Для локальной разработки достаточно стандартного инсталлятора.

Установить требуемую библиотеку

Рекомендуемая библиотека для синхронного подключения — psycopg2. В консоли Python можно проверить наличие модуля:

import psycopg2

Если получите ошибку (например, “No module named ‘psycopg2’”), установите пакет:

pip install psycopg2-binary

Примечание: для production-инсталляций многие предпочитают компилируемый psycopg2 (без -binary) и управляют зависимостями через виртуальные окружения (venv, pipenv, poetry).

Альтернатива

  • SQLAlchemy — ORM/абстракция над драйвером, рекомендуема для приложений с миграциями.
  • asyncpg — высокопроизводительный асинхронный драйвер для asyncio‑приложений.

Получение учётных данных через pgAdmin4

pgAdmin4 — графический интерфейс для управления серверами PostgreSQL. Его можно было установить вместе с сервером, но при необходимости установить отдельно.

Как получить параметры подключения (host, port, username) через pgAdmin4:

  1. Откройте pgAdmin4 из меню приложений.
  2. В левой панели нажмите раздел Servers.
  3. При первом подключении введите пароль Postgres, который вы задали при установке.

Подсказка ввода пароля для подключения к серверу Postgres

  1. После подключения разверните пункт PostgreSQL <версия>, щёлкните правой кнопкой по серверу и выберите Properties.

Выпадающее меню сервера Postgres с опцией Properties

  1. В диалоге Properties откройте вкладку Connection и зафиксируйте Host name, Port и Username.

Окно с деталями соединения сервера Postgres

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

Подключение к серверу Postgres (psycopg2)

Пример простого подключения к локальному серверу:

import psycopg2

conn = psycopg2.connect(host='localhost', port='5432', user='postgres', password='your_password')
cur = conn.cursor()
conn.set_session(autocommit=True)

# теперь можно выполнять SQL-команды
cur.execute('SELECT version();')
print(cur.fetchone())

cur.close()
conn.close()

Ключевые моменты:

  • Используйте conn.set_session(autocommit=True) если вы хотите, чтобы каждое выражение автоматически коммитилось. В большинстве случаев лучше управлять транзакциями явно (conn.commit()/conn.rollback()).
  • Закрывайте курсоры и соединения в блоке finally или используйте context manager.

Пример с context manager:

from contextlib import closing

with closing(psycopg2.connect(...)) as conn:
    conn.set_session(autocommit=True)
    with conn.cursor() as cur:
        cur.execute('SELECT 1')
        print(cur.fetchone())

Создание базы данных

Создание отдельной базы данных выполняется с помощью команды CREATE DATABASE, которую можно отправить через курсор, подключённый к базе с правами администратора (обычно ‘postgres’). Пример:

try:
    cur.execute("CREATE DATABASE music")
except psycopg2.Error as e:
    print(e)

Обработка ошибок важна: в реальном приложении логируйте исключения и применяйте повторные попытки или оповещения.

Python‑код в Jupyter Notebook, создающий базу данных

Проверка в pgAdmin4

После создания обновите список баз данных в pgAdmin4. Новая база должна появиться в разделе PostgreSQL > Databases.

Список баз данных в интерфейсе pgAdmin4

Удаление базы данных

Чтобы удалить базу данных используйте DROP DATABASE. Будьте осторожны — операция необратима.

try:
    cur.execute("DROP DATABASE music")
except psycopg2.Error as e:
    print(e)

Код Python для удаления базы данных в Postgres

После выполнения обновите список в pgAdmin4 — база исчезнет.

Когда это не сработает — распространённые ошибки и советы по отладке

  • Неправильные параметры подключения (host, port, user, password) — проверьте pg_hba.conf и параметры в pgAdmin4.
  • “FATAL: role \”username\” does not exist” — убедитесь, что пользователь создан на сервере.
  • “database is being accessed by other users” при DROP DATABASE — необходимо отключить активные подключения к базе перед удалением.
  • Ошибки прав доступа — используйте роли и GRANT/REVOKE, не запускайте приложение под суперпользователем.

Диагностика:

  • Проверьте логи сервера PostgreSQL (обычно /var/log/postgresql/ или через pgAdmin).
  • Попробуйте подключиться через psql для исключения проблем на уровне драйвера.

Безопасность и управление секретами

  • Не храните пароли в коде. Используйте переменные окружения, .pgpass (локально) или системный менеджер секретов (Vault, AWS Secrets Manager).
  • Включите SSL/TLS для подключений в продакшне, когда сервер и клиент находятся на разных машинах.
  • Ограничьте доступ по IP и используйте роли с минимальными привилегиями.
  • Регулярно обновляйте PostgreSQL и драйверы, чтобы закрыть известные уязвимости.

Тесты и критерии приёмки

Критерии приёмки:

  • Приложение успешно устанавливает соединение с тестовой базой в автоматизированном окружении.
  • CRUD‑операции проходят без ошибок и корректно откатываются в случае ошибок.
  • Нельзя получить доступ к критическим операциям без соответствующих ролей.
  • Пароли не хранятся в репозитории кода.

Минимальные тесты (acceptance):

  • Тест подключения: SELECT 1 возвращает 1.
  • Создание базы данных тестовой схемы и последующее удаление.
  • Тест транзакций: intentional error → rollback.

Лучшие практики и шаблон подключения (чек‑лист)

Для разработчика:

  • Установить виртуальное окружение (venv/poetry).
  • Установить psycopg2-binary или psycopg2.
  • Хранить параметры подключения в переменных окружения.
  • Использовать пул подключений (например, через SQLAlchemy или psycopg2.pool).
  • Покрыть критические пути тестами.

Для DevOps/Системного администратора:

  • Настроить pg_hba.conf и firewall.
  • Включить бэкапы и план восстановления.
  • Настроить мониторинг (линии ошибок, метрики соединений).

Шаблон строки подключения (DSN):

postgresql://user:password@host:port/dbname

Альтернативные подходы

  • SQLAlchemy: рекомендован для приложений с миграциями и сложной моделью данных.
  • asyncpg: если приложение асинхронное и нужна высокая производительность.
  • ORM‑решения (Django ORM, Peewee) — если предпочитаете уровень абстракции.

Модель мышления (ментальная модель)

Думайте о соединении как о канале: один канал = одно TCP‑соединение. Пул подключений сокращает накладные расходы при большом числе одновременных запросов. Управляйте транзакциями локально и явно.

План отката и инцидент-рутин

Если при миграции возникла критическая ошибка:

  1. Откатите миграцию (если есть миграции с обратимыми шагами).
  2. Восстановите из последней успешной копии (backup).
  3. Переключите трафик на резервную реплику при необходимости.
  4. Проведите пост‑mortem и обновите runbook.

Краткий глоссарий (1 строка каждый)

  • Cursor — объект для выполнения SQL‑команд и получения результатов.
  • Connection — сетевое соединение с сервером PostgreSQL.
  • Pool — пул подключений для повторного использования TCP‑соединений.
  • pgAdmin4 — GUI для управления серверами PostgreSQL.

Заключение

Подключение Python к PostgreSQL через psycopg2 — простая и гибкая задача, если соблюдать правила безопасности и управления транзакциями. Используйте переменные окружения, пулы подключений и автоматические тесты. Для сложных проектов рассмотрите SQLAlchemy или асинхронные драйверы.

Важно: перед удалением базы убедитесь, что у вас есть актуальные бэкапы и что никто не использует базу в момент удаления.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Первый Android: настройка и базовое использование
Mobile

Первый Android: настройка и базовое использование

Скриншоты в Windows 11 — Snip and Sketch
Windows

Скриншоты в Windows 11 — Snip and Sketch

Artfol — соцсеть для художников: обзор и руководство
Искусство

Artfol — соцсеть для художников: обзор и руководство

Профессиональная подпись email в Canva
Дизайн электронной почты

Профессиональная подпись email в Canva

Как создать таблицу в Canva
Дизайн

Как создать таблицу в Canva

Переход из графического дизайна в UI/UX
Дизайн

Переход из графического дизайна в UI/UX