Я пытаюсь воспроизвести что-то похожее на класс Model Djangos в PHP. Мне было интересно, как django обрабатывает загрузку и сохранение записей из таблицы моделей.
Например, при вызове Person.objects.all()
(Person
, конечно, подкласс django.db.models.Model
), я ожидаю, что Django выполнит SQL-запрос, например, SELECT * FROM myapp_person
, а затем преобразует данные, полученные из запрос к экземплярам Model-класса. Это правильно? Тогда,
- Может ли это привести к переполнению памяти, когда слишком много записей, или есть способ, которым Django обрабатывает этот побочный эффект?
- При вызове
Person.objects.filter(name="Paul")
я ожидаю, что Django выполнит SQL-запрос наподобие SELECT * FROM myapp_person WHERE name = 'Paul'
, но что, если Person.objects.all()
был вызван раньше? Кеширует ли их django или выполняет запрос для каждого вызова?