Установка и подключение
| Команда / Код | Описание |
pip install sqlalchemy | Установка SQLAlchemy |
pip install pymysql | Драйвер для MySQL |
create_engine(url) | Создание движка подключения |
Base.metadata.create_all(engine) | Создание всех таблиц в БД |
Модели
| Код | Описание |
declarative_base() | Создание базового класса для моделей |
class Model(Base) | Определение модели (таблицы) |
__tablename__ = 'name' | Имя таблицы в БД |
Column(Integer, primary_key=True) | Первичный ключ |
Column(String(50), nullable=False) | Строка, обязательное поле |
Column(Numeric(10,2)) | Числовое поле с фиксированной точностью |
ForeignKey('table.id') | Внешний ключ |
relationship("Model", back_populates="attr") | Связь ORM |
Сессия
| Код | Описание |
sessionmaker(bind=engine) | Фабрика сессий |
session = Session() | Создание сессии |
session.add(obj) | Добавить объект в сессию |
session.add_all([...]) | Добавить несколько объектов |
session.commit() | Зафиксировать изменения в БД |
session.rollback() | Откатить незафиксированные изменения |
session.delete(obj) | Пометить объект на удаление |
session.close() | Закрыть сессию |
Запросы (Query API)
| Код | Описание |
session.query(Model).all() | Все записи |
session.query(Model).get(pk) | По первичному ключу |
.filter(Model.field == val) | WHERE условие |
.filter_by(field=val) | WHERE (именованные аргументы) |
.order_by(Model.field) | Сортировка ASC |
.order_by(desc(Model.field)) | Сортировка DESC |
.group_by(Model.field) | GROUP BY |
.having(condition) | HAVING (после GROUP BY) |
.join(Model2) | INNER JOIN |
.outerjoin(Model2) | LEFT OUTER JOIN |
.subquery() | Создать подзапрос |
.first() | Первый результат или None |
.one() | Ровно один; исключение при 0 или 2+ |
.scalar() | Первое значение первой строки |
Агрегирующие функции (func)
| Функция | SQL | Описание |
func.count(col) | COUNT | Количество записей |
func.sum(col) | SUM | Сумма значений |
func.avg(col) | AVG | Среднее значение |
func.max(col) | MAX | Максимальное значение |
func.min(col) | MIN | Минимальное значение |
Выражения фильтрации
| Метод | SQL | Пример |
.like('A%') | LIKE | Имена, начинающиеся на A |
.between(2, 4) | BETWEEN | id от 2 до 4 |
.in_(list) | IN | Значение из списка |
and_(...) | AND | Несколько условий AND |
or_(...) | OR | Одно из условий OR |
not_(...) | NOT | Отрицание условия |
Git — ветки для задания
| Команда | Описание |
git checkout -b lesson/08-summary-2 | Создать ветку |
git add . | Добавить файлы |
git commit -m "feat: урок 08" | Коммит |