SQLAlchemy — это библиотека для Python, которая помогает работать с базами данных без написания сырых SQL-запросов. Вместо того чтобы писать SQL вручную, программист пишет Python-код, а SQLAlchemy сама превращает его в нужные запросы. Это делает код чище и безопаснее.
SQLAlchemy состоит из двух частей: Core и ORM. Core работает ближе к SQL — запросы пишутся в синтаксисе Python, но похожи на SQL. ORM — это более простой подход, где таблицы описываются через Python-классы, а библиотека автоматически генерирует SQL.
Тему инкапсуляции изучают на курсе «Python-разработчик». На нём вы за 10 месяцев освоите IT‑профессию с нуля, получите реальный опыт и навыки, которые нужны работодателям.
Главная причина использовать SQLAlchemy — не писать SQL вручную каждый раз. Библиотека делает код более организованным и защищённым от SQL-инъекций. SQLAlchemy автоматически подставляет параметры безопасным способом.
Ещё одно преимущество — переносимость. Можно переключиться с MySQL на PostgreSQL, не переписывая код. Достаточно поменять строку подключения, и библиотека адаптирует синтаксис под новую базу.
SQLAlchemy подходит как для простых скриптов, так и для больших проектов. Она даёт полный контроль над запросами, когда это нужно, и автоматизирует рутину, когда программист работает через ORM.
ORM (Object Relational Mapper) — это механизм, который связывает Python-классы с таблицами в базе данных. Создаётся класс, например User, и каждый объект этого класса соответствует одной строке в таблице users. SQLAlchemy сама отслеживает изменения объектов и сохраняет их в базу.
Это называется паттерном Unit of Work («единица работы»). Вместо того чтобы писать INSERT или UPDATE, программист меняет атрибуты объекта, и библиотека сама решает, что нужно отправить в базу. Она группирует изменения и отправляет их одной транзакцией.
Взаимодействие с базой происходит через объект Session. Это «рабочее пространство», в котором создаются, изменяются и удаляются объекты. Когда всё готово, вызывается session.commit () — и все изменения сохраняются в базе.
У SQLAlchemy есть несколько возможностей, которые делают её удобной. Они помогают как новичкам, так и опытным разработчикам. Расскажем про ключевые возможности.
Помимо этого, в возможности SQLAlchemy входит работа с транзакциями. Библиотека поддерживает транзакции через Session с возможностью отката при ошибке.
Тему инкапсуляции изучают на курсе «Python-разработчик». На нём вы за 10 месяцев освоите IT‑профессию с нуля, получите реальный опыт и навыки, которые нужны работодателям.
python
from sqlalchemy import create_engine, ForeignKey, String
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship, Session
class Base(DeclarativeBase):
pass
class User(Base):
__tablename__ = "user_account"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(String(30))
addresses: Mapped[list["Address"]] = relationship(back_populates="user")
class Address(Base):
__tablename__ = "address"
id: Mapped[int] = mapped_column(primary_key=True)
email: Mapped[str]
user_id: Mapped[int] = mapped_column(ForeignKey("user_account.id"))
user: Mapped["User"] = relationship(back_populates="addresses")
python
engine = create_engine("sqlite:///example.db")
Base.metadata.create_all(engine)
Теперь можно добавлять записи. Создаются объекты, добавляются в сессию и сохраняются:
python
with Session(engine) as session:
user = User(name="alice")
address = Address(email="alice@example.com", user=user)
session.add(user)
session.add(address)
session.commit()
python
from sqlalchemy import select
with Session(engine) as session:
stmt = select(User).where(User.name == "alice")
user = session.execute(stmt).scalar_one()
print(user.name, user.addresses[0].email)
Начать изучать SQLAlchemy проще всего с небольшого проекта. Берётся простая база данных, например SQLite, и выполняются базовые операции через ORM.
Лучший способ освоить библиотеку — практиковаться на реальных задачах. Пишется скрипт, который создаёт базу, добавляет записи, читает и обновляет их. Когда основы освоены, можно переходить к более сложным темам: отношениям, настройке загрузки и оптимизации запросов.
Полезно читать официальную документацию и разбирать примеры. SQLAlchemy — большая библиотека, поэтому лучше изучать её постепенно, от простого к сложному. Начинать стоит с ORM, а затем, когда понадобится тонкая настройка, переходить к Core.
Читать также: