Как развернуть PostgreSQL и подключиться к ней из Python с помощью psycopg2

8 минут чтения
Средний рейтинг статьи — 4.9

PostgreSQL — одна из самых популярных систем управления базами данных (СУБД) с открытым исходным кодом. Она отличается надёжностью, поддержкой транзакций, гибкой системой типов и активным сообществом.
В этой статье разберём, как установить PostgreSQL, создать базу данных и подключиться к ней из Python с помощью библиотеки psycopg2.

1. Установка PostgreSQL

На Linux (Ubuntu/Debian)

sudo apt update
sudo apt install postgresql postgresql-contrib

После установки PostgreSQL автоматически запустится как служба. Проверить статус можно командой:

sudo systemctl status postgresql

На macOS

Самый простой способ — через Homebrew:

brew install postgresql
brew services start postgresql

На Windows

Скачайте установщик с официального сайта PostgreSQL, выберите версию и следуйте мастеру установки. После завершения можно использовать pgAdmin — графическую оболочку для управления базой.

2. Создание базы данных и пользователя

После установки войдите в консоль PostgreSQL:

sudo -u postgres psql

Создайте пользователя и базу данных:

CREATE USER myuser WITH PASSWORD 'mypassword';
CREATE DATABASE mydb OWNER myuser;
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

Проверить подключение можно:

psql -U myuser -d mydb -h localhost

3. Установка библиотеки psycopg2

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

Установите пакет через pip:

pip install psycopg2-binary

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

4. Подключение к PostgreSQL из Python

Пример базового подключения и выполнения SQL-запроса:

import psycopg2
 
try:
    # Подключение к базе
    conn = psycopg2.connect(
        dbname="mydb",
        user="myuser",
        password="mypassword",
        host="localhost",
        port="5432"
    )
    print("Подключение успешно!")
 
    # Создаём курсор
    cur = conn.cursor()
 
    # Выполняем запрос
    cur.execute("SELECT version();")
    db_version = cur.fetchone()
    print(f"Версия PostgreSQL: {db_version[0]}")
 
    # Закрываем соединение
    cur.close()
    conn.close()
 
except Exception as e:
    print(f"Ошибка подключения: {e}")

5. Пример создания таблицы и вставки данных

import psycopg2
 
conn = psycopg2.connect(
    dbname="mydb",
    user="myuser",
    password="mypassword",
    host="localhost"
)
 
cur = conn.cursor()
 
# Создаём таблицу
cur.execute("""
CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100) UNIQUE
);
""")
 
# Вставляем данные
cur.execute("""
INSERT INTO users (name, email)
VALUES (%s, %s)
RETURNING id;
""", ("Иван", "ivan@example.com"))
 
user_id = cur.fetchone()[0]
print(f"Добавлен пользователь с ID {user_id}")
 
conn.commit()
cur.close()
conn.close()

6. Работа с пулом подключений (опционально)

Если ваше приложение активно взаимодействует с базой, можно использовать ThreadedConnectionPool из psycopg2.pool:

from psycopg2 import pool
 
connection_pool = pool.ThreadedConnectionPool(
    1, 10,
    dbname="mydb",
    user="myuser",
    password="mypassword",
    host="localhost"
)
 
conn = connection_pool.getconn()
cur = conn.cursor()
cur.execute("SELECT COUNT(*) FROM users;")
print("Пользователей в базе:", cur.fetchone()[0])
cur.close()
connection_pool.putconn(conn)

Пул подключений повышает производительность за счёт повторного использования уже установленных соединений.

7. Заключение

Использование PostgreSQL в связке с Python и библиотекой psycopg2 — это надёжный и проверенный вариант для создания приложений любого масштаба.
Вы можете:

  • хранить структурированные данные с транзакционной целостностью;
  • выполнять сложные SQL-запросы и агрегации;
  • кэшировать, логировать и масштабировать свои приложения с помощью инструментов PostgreSQL.

Если вы только начинаете, попробуйте поднять тестовую базу локально и поэкспериментировать с простыми запросами — это отличный способ почувствовать мощь этой СУБД.

8 минут чтения
Средний рейтинг статьи — 4.9

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний