psycopg2 для PostgreSQL) или через библиотеку вроде SQLAlchemy, которая использует драйверы внутри и даёт более удобный интерфейс (в том числе ORM) для подключения и работы с БД.
psycopg2 для PostgreSQL) или через библиотеку вроде SQLAlchemy, которая использует драйверы внутри и даёт более удобный интерфейс (в том числе ORM) для подключения и работы с БД.
psycopg2 (низкоуровневый драйвер для PostgreSQL)
psycopg2 — популярный драйвер для работы с базой PostgreSQL из Python. Схема работы:
создаём соединение (connection) с БД вызовом psycopg2.connect(...) — указываем host, dbname, user, password;
получаем курсор (cursor) через conn.cursor() и выполняем SQL‑запросы методом cursor.execute(sql, params);
читаем результаты через fetchone(), fetchall(), фиксируем изменения conn.commit() или откатываем conn.rollback(), затем закрываем курсор и соединение.
import psycopg2
conn = psycopg2.connect(
host="localhost",
dbname="mydb",
user="user",
password="secret",
)
cur = conn.cursor()
cur.execute("SELECT id, name FROM users WHERE active = TRUE")
rows = cur.fetchall()
for row in rows:
print(row)
conn.commit()
cur.close()
conn.close()Такой подход даёт полный контроль над SQL — вы сами пишете запросы SELECT, INSERT, UPDATE, DELETE и обрабатываете результаты.
SQLAlchemy (движок + ORM)
SQLAlchemy — это библиотека, которая умеет:
создавать «движок» (engine) подключения к разным СУБД через функцию create_engine();
давать единый интерфейс для выполнения SQL‑запросов (через text() или expression language);
поверх этого предоставляет ORM: таблицы описываются как классы, а строки — как объекты.
from sqlalchemy import create_engine, text
engine = create_engine("postgresql+psycopg2://user:secret@localhost/mydb")
with engine.connect() as conn:
result = conn.execute(text("SELECT id, name FROM users WHERE active = true"))
for row in result:
print(row.id, row.name)ORM‑часть SQLAlchemy позволяет описывать модели примерно так:
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
class User(Base):
__tablename__ = "users"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str]А запросы к БД писать уже на уровне Python‑объектов, а не сырых строк SQL.
Как ответить на собеседовании
Подключить БД к Python можно напрямую через драйвер, например psycopg2 для PostgreSQL: создать соединение, курсор, выполнить SELECT/INSERT/UPDATE/DELETE и сделать COMMIT. Второй вариант — использовать SQLAlchemy: она создаёт engine поверх драйвера и даёт более удобный интерфейс, в том числе ORM, где таблицы — это классы, а строки — объекты.
Оцени свой прогресс