170 похожих чатов

Какой код лучше? 1) try: instance = Model.objects.get(foo='bar') except: instance = None 2) instance =

Model.objects.filter(foo='bar').first()

Код делает одно и тоже провёл некоторые замеры и 1-ая функция отрабатывает быстрее. Возможно это из-за того что у меня маленькая бд или я хз. В общем, мне интересно ваше мнение по этому вопросу: какой код лучше? И почему вторая функция работает дольше?

25 ответов

11 просмотров

P.S.: обе функции отрабатывают в равных условиях, когда такого элемента нету и нужно пройтись по всей бд

Может get более медленный чем filter

Yaro
Может get более медленный чем filter

нет, такое объяснение не катит. Что именно под капотом происходит?

Жертва бюрократических проволочек
P.S.: обе функции отрабатывают в равных условиях, ...

чем? Если поле, по которому ты фильтруешь проиндексировано в бд, то перформанс будет один и тот же. тоже самое и с get

Жертва бюрократических проволочек
Что значит "чем?"?

я тебе написал чем, это риторический вопрос

Жертва бюрократических проволочек
Как?

get более медлнееый так как в нем вызывается filter, но только в этом ли причина

Ты специально выбиваешь ошибку?

Не, параметр существующий, просто нету в бд такого элемента

Yaro
Ты специально выбиваешь ошибку?

Ну, я рассчитываю на худший случай, когда придётся по всей бд пройтись, в поискам элементам

Yaro
first так делает?

first скорее всего лимит к запросу забавляет

Alexander
first скорее всего лимит к запросу забавляет

def first(self): """Return the first object of a query or None if no match is found.""" for obj in (self if self.ordered else self.order_by('pk'))[:1]: eturn obj

Alexander
first скорее всего лимит к запросу забавляет

А, ещё, вероятно, он сортирует, чтобы взять именно first

Yaro
first так делает?

тут не в first дело, а в filter и get

dnacd 🦜
тут не в first дело, а в filter и get

instance = Model.objects.filter(foo='bar').get()

Похожие вопросы

Обсуждают сегодня

кому не сложно распишите пожалуйста для какой цели тут вот эти скобки и в них пихается указатель?
Михаил Helper
15
Обновленный chat тестили уже господа? Готовимся на заводы ? Простой проект на ларавель собирает за 1 ответ..
Jacov Borisov
11
Или мне дублировать структуру с информацией о следующем потоке в адресное пространство текущего потока?
One
9
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в "главной форме" создаются "дочерние формы / копии главной" new_form := TForm1.Create(Application); new_form.blah_blah_blah обработчик, срабатывающий при изменении положени...
livontiy
6
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
Can anyone help me out here?
Ryzen
7
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Карта сайта