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

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

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

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

25 ответов

27 просмотров

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()

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта