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

Подключение PostgreSQL из Python — psycopg2

5 min read Базы данных Обновлено 30 Dec 2025
Подключение PostgreSQL из Python — psycopg2
Подключение PostgreSQL из Python — psycopg2

Кратко: установите PostgreSQL и библиотеку psycopg2, извлеките параметры подключения (host, port, user, пароль) через pgAdmin4 и используйте psycopg2.connect + cursor для выполнения SQL: создания, проверки и удаления баз данных.

Логотип PostgreSQL: стилизованная синяя голова слона на экране ноутбука

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

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

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

  • Скачайте и установите PostgreSQL для вашей ОС, затем используйте библиотеку psycopg2 для подключения из Python.
  • Через pgAdmin4 получите параметры сервера (host, port, username, пароль) для подключения из Python.
  • Выполняйте SQL-команды из Python, чтобы создавать, проверять и удалять базы данных.

Перед началом — что нужно знать

PostgreSQL — свободная реляционная база данных. psycopg2 — популярный синхронный драйвер для Python, который позволяет исполнять SQL и работать с транзакциями. Краткое определение: драйвер — библиотека, обеспечивающая соединение между вашим кодом и сервером баз данных.

Важно: в продакшне не храните пароли в открытом виде в коде. Используйте переменные окружения, менеджеры секретов или файлы конфигурации с правами доступа.

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

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

Следуйте шагам установщика для вашей платформы и запомните пароль суперпользователя (обычно postgres) — он понадобится для подключения.

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

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

import psycopg2

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

pip install psycopg2-binary

Примечание: рекомендуется ставить пакет psycopg2-binary для простого развёртывания локально. Для сборки в контейнерах или на сервере с контролем зависимостей используйте исходный пакет psycopg2 и системные зависимости libpq-dev / postgresql-devel.

Получение параметров подключения через pgAdmin4

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

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

  1. Откройте pgAdmin4.
  2. В левой панели разверните узел Servers.
  3. Выберите сервер PostgreSQL (например PostgreSQL 16) и подключитесь, введя пароль суперпользователя.
  4. Правой кнопкой мыши на сервере → Properties.
  5. Перейдите на вкладку Connection.
  6. Скопируйте Host name (имя хоста), Port (порт) и Username (имя пользователя).

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

Меню сервера Postgres с опцией Properties

Окно с деталями подключения: Host, Port, Username

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

Используйте полученные параметры и psycopg2.connect:

import psycopg2

conn = psycopg2.connect(
    host='localhost',
    port='5432',
    user='postgres',
    password='your_password_here'
)

cur = conn.cursor()
# Включаем автокоммит, чтобы DDL-запросы (CREATE/DROP) применялись мгновенно
conn.set_session(autocommit=True)

Пояснения:

  • conn — объект соединения; отвечает за транзакции и конфигурацию сессии.
  • cur — курсор: через него выполняются SQL-запросы.
  • set_session(autocommit=True) удобно для операций создания/удаления баз, чтобы не вызывать conn.commit() вручную.

Как создать базу данных PostgreSQL

SQL-команда CREATE DATABASE создаёт новую базу данных. В Python её отправляют через cursor.execute:

try:
    cur.execute("CREATE DATABASE music")
except psycopg2.Error as e:
    print("Ошибка при создании базы:", e)

Обратите внимание: команда CREATE DATABASE выполняется в контексте сервера, но не внутри уже созданной базы данных, поэтому обычно вы подключаетесь к системной базе postgres или другой административной базе и оттуда создаёте новые базы.

Фрагмент кода Python в Jupyter Notebook

Проверка базы в pgAdmin4

После выполнения CREATE DATABASE обновите перечень баз в pgAdmin4 (правый клик → Refresh) и найдите созданную базу, например music, в разделе Servers > PostgreSQL 16 > Databases.

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

Как удалить базу данных PostgreSQL

Чтобы удалить базу, выполняют DROP DATABASE:

try:
    cur.execute("DROP DATABASE music")
except psycopg2.Error as e:
    print("Ошибка при удалении базы:", e)

После выполнения DROP DATABASE обновите список баз в pgAdmin4 — база должна исчезнуть.

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

Советы по безопасности и конфигурации

  • Используйте отдельные учётные записи для приложений, не работайте под суперпользователем postgres.
  • Отключайте автокоммит в тех местах, где важны транзакции.
  • Ограничьте доступ по сети: настройте pg_hba.conf и firewall.
  • Храните пароли в переменных окружения или в менеджерах секретов.

Когда подход может не сработать (контрпримеры)

  • Если вы используете асинхронный фреймворк (asyncio, FastAPI с async endpoints), psycopg2 может блокировать цикл — лучше использовать asyncpg или aiopg.
  • В контейнерах с ограниченными зависимостями установка psycopg2 (не-binary) потребует системных библиотек; используйте psycopg2-binary для простоты или подготовьте образ с нужными dev-пакетами.
  • При сетевых ограничениях (VPN, приватные сети) прямое подключение к localhost будет недоступно — придётся настраивать туннели или прокси.

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

  • SQLAlchemy — ORM и слой абстракции над драйвером; полезен, если вы хотите описывать модели Python-классами.
  • asyncpg — высокопроизводительный асинхронный драйвер для asyncio.
  • pg8000 — чисто Python-реализация драйвера (без бинарных зависимостей).

Ментальные модели и эвристики

  • Разделяйте роли: приложение читает/пишет данные в свою схему; DBA создаёт/удаляет базы и управляет бэкапами.
  • DDL (CREATE/DROP) выполняют редко и под контролем; DML (INSERT/UPDATE/SELECT) — в коде приложения.
  • Тестируйте подключение отдельно от бизнес-логики: сначала соединение → затем базовые запросы → затем сложные транзакции.

Мини-методология быстрого подключения (шаги)

  1. Установить PostgreSQL и pgAdmin4.
  2. Установить psycopg2-binary в виртуальном окружении.
  3. Получить host/port/user/password через pgAdmin4.
  4. Подключиться из Python и проверить SELECT 1.
  5. Выполнить необходимые DDL/DML операции.
  6. Закрыть курсор и соединение.

Пример проверки подключения:

cur.execute('SELECT 1')
print(cur.fetchone())  # ожидается (1,)
cur.close()
conn.close()

Контроль качества и критерии приёмки

  • Успешное подключение: SELECT 1 возвращает (1,).
  • Создание базы: новая база появляется в pgAdmin4 и доступна для подключения.
  • Удаление базы: база исчезла из списка после DROP DATABASE.
  • Безопасность: пароли не хранятся в коде; доступ ограничен списком хостов в pg_hba.conf.

Чит-лист по ролям

Разработчик:

  • Установить виртуальное окружение и psycopg2-binary.
  • Проверить подключение: SELECT 1.
  • Выполнить миграции/DDL в тестовой среде.

DBA:

  • Создать учётные записи с ограничениями по правам.
  • Настроить резервное копирование и права доступа.
  • Проверить конфигурации pg_hba.conf и postgresql.conf.

DevOps:

  • Подготовить контейнер/образ с системными зависимостями.
  • Настроить секреты и переменные окружения.
  • Обеспечить мониторинг и бэкапы.

Шаблон ошибок и способы исправления

  • OperationalError: проверьте, запущен ли сервер и правильны ли host/port.
  • AuthenticationError: проверьте логин/пароль и pg_hba.conf.
  • Permission denied: проверьте права пользователя на целевую базу.

Короткий глоссарий

  • DDL: команды определения структуры (CREATE, DROP).
  • DML: команды работы с данными (SELECT, INSERT, UPDATE, DELETE).
  • Cursor: объект для выполнения SQL из клиента.

Резюме

  • Для простого соединения используйте psycopg2.connect, cursor и autocommit для DDL.
  • В продакшне предпочтительны менеджеры секретов и отдельные пользователи.
  • Для асинхронных приложений используйте asyncpg; для абстракции — SQLAlchemy.

Спасибо — теперь у вас есть пошаговый план и справочные материалы для безопасного и повторяемого подключения PostgreSQL из Python.

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

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

Невидимые символы в текстовых редакторах — как видеть и править
Документы

Невидимые символы в текстовых редакторах — как видеть и править

Почему не работает звук на ПК — как исправить
Аудио

Почему не работает звук на ПК — как исправить

Windows 11: Меню Быстрых настроек — настройка и советы
Windows

Windows 11: Меню Быстрых настроек — настройка и советы

Отключить кроссплей на Xbox — пошагово
Руководство

Отключить кроссплей на Xbox — пошагово

Устранение сбоев в Call of Duty: Modern Warfare II
Игры

Устранение сбоев в Call of Duty: Modern Warfare II

Disney+ GroupWatch: смотреть вместе на расстоянии
Стриминг

Disney+ GroupWatch: смотреть вместе на расстоянии