📝 Python

Что такое ORM

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
363
🌿
Уровень
Средний

ORM (Object-Relational Mapping) — технология, позволяющая работать с базой данных через объекты Python вместо SQL.

Без ORM (сырой SQL)

import sqlite3

conn = sqlite3.connect('db.sqlite3')
cursor = conn.cursor()

cursor.execute("INSERT INTO tasks (title, status) VALUES (?, ?)", ('Задача', 'todo'))
cursor.execute("SELECT * FROM tasks WHERE status = ?", ('todo',))
rows = cursor.fetchall()

С ORM (Django ORM)

from tasks.models import Task

# Создание
task = Task.objects.create(title='Задача', status='todo')

# Чтение
tasks = Task.objects.filter(status='todo')

# Обновление
task.status = 'done'
task.save()

# Удаление
task.delete()

Преимущества ORM

  • Безопасность — защита от SQL-инъекций
  • Читаемость — Python код вместо SQL строк
  • Переносимость — один код для SQLite, PostgreSQL, MySQL
  • Миграции — автоматическое обновление схемы БД

Как ORM генерирует SQL

# Python
Task.objects.filter(status='todo', priority__gte=2)

# Генерирует SQL:
# SELECT * FROM tasks WHERE status = 'todo' AND priority >= 2

Можно посмотреть SQL:

qs = Task.objects.filter(status='todo')
print(qs.query)
# SELECT "tasks_task"."id", ... FROM "tasks_task" WHERE "tasks_task"."status" = 'todo'

Популярные ORM в Python

ORM Используется с
Django ORM Django
SQLAlchemy Flask, FastAPI, standalone
SQLModel FastAPI (над SQLAlchemy)
Peewee lightweight проекты
Tortoise ORM async Python

Когда ORM недостаточно

Для сложных аналитических запросов иногда эффективнее использовать raw SQL:

from django.db import connection

with connection.cursor() as cursor:
    cursor.execute("SELECT date_trunc('month', created_at), COUNT(*) FROM tasks GROUP BY 1")
    rows = cursor.fetchall()

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

JSON: Сохранение данных

Цель: Научиться сохранять и загружать данные в формате JSON.

📅 03.04.2026 👁️ 466
📝

CSV: Работа с таблицами

CSV (Comma-Separated Values) — текстовый формат для хранения табличных данных. Открывается в Excel и Google...

📅 03.04.2026 👁️ 434
📝

ООП: Программируй как создатель миров 🌍

Представь: ты создаёшь игру про зомби-апокалипсис. Нужны зомби, люди, оружие. Каждый зомби имеет имя, здоровье,...

📅 03.04.2026 👁️ 413

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!