Олег Чуркин (Rambler&Co) - Django: правильно готовим ORM

  Рет қаралды 11,974

MoscowPython

MoscowPython

7 жыл бұрын

Доклад с Moscow Python Conf 2016 (conf.python.ru)
Слайды: conf.python.ru/django-orm/
В докладе будут затронуты большинство тем, которые необходимо знать современному python-разработчику, чтобы эффективно использовать функционал Django-ORM для построения высоконагруженных web-проектов.
Поговорим и про классические ошибки при работе с QuerySet’ами и про профилирование и про code style. Выясним как можно сэкономить память и время при выполнении запросов, покажу популярные ошибки при проектировании схемы данных и при использовании миграций, а так же рассмотрим несколько распространенных задач современного веба, которые в Django еще не решены или решены некорректно.

Пікірлер: 24
@Shmidtelson
@Shmidtelson 7 жыл бұрын
Очень познавательно. Побольше бы таких докладов =) Да хрен с этим кофебрейком. Как будто каждый день такую инфу дают.
@fannigurt
@fannigurt 6 жыл бұрын
Вы когда организовываете конференции, вы не про кофе думайте, а про контент. Если бы просмотрели презентацию заранее и подготовились по таймингу, то поняли бы, что она часовая.
@PythonDevelopment
@PythonDevelopment Жыл бұрын
Жаль что не продолжили. Такой суперский докладчик и его так слили в конце! Печально, ребята!
@torroot4142
@torroot4142 7 жыл бұрын
офигенный доклад спасибо
@user-vj3ug7ub3h
@user-vj3ug7ub3h 5 жыл бұрын
Спасибо за доклад. Очень толково!
@Igor-if7sx
@Igor-if7sx 3 жыл бұрын
Годнота! Спасибо Олег
@alexeyluzin4485
@alexeyluzin4485 3 жыл бұрын
огонь
@SamoilenkoLev
@SamoilenkoLev 7 жыл бұрын
Спасибо, очень круто. Не понял, правда, почему prefetch_related так плох. Если дополнительный запрос генерит не так много данных, мне кажется, проще его использовать чем raw SQL
@delir0
@delir0 7 жыл бұрын
Спасибо за доклад, он хорош. Хотя, есть пара ошибок: 1) М2М связь Django создаёт уникальный составной индекс, в докладе утверждается иное; 2) Аргумент поля для создания модели называется db_index, а не index_db; 3) Докладчик рекомендует к использованию iterator, однако для psycopg2, драйвера, который мы все используем для постгреса, iterator не имеет смысла, поскольку сам драйвер кэширует результат.
@Bahusss
@Bahusss 7 жыл бұрын
Спасибо за замечания. Однако, итератор работает не на уровне драйвера, а на уровне ORM и с помощью него можно избежать создания экземпляров модели в памяти. А из бд все данные подтягиваются всегда (если не использовать streaming).
@delir0
@delir0 7 жыл бұрын
Ух ты, вот это вы меня обрадовали.
@TyVik
@TyVik 5 жыл бұрын
@@Bahusss Upd. Мне кажется, что Django ORM уже умеет работать через server-side cursor - docs.djangoproject.com/en/2.2/ref/models/querysets/#django.db.models.query.QuerySet.iterator
@vmgrussia
@vmgrussia 7 жыл бұрын
докладчик молодец )) хотя я хз что такое ORM ))
@funkindy
@funkindy 5 жыл бұрын
Доклад супер. Но удивило несколько, что скорость БД выше скорости питона, по части манипуляции с данными. Разные сложные решейпы и агрегации я делаю в pandas, загружая queryset в датафрейм, и не совсем понятно как in-memory обработка может быть медленней. Но я далеко не гуру.
@TyVik
@TyVik 5 жыл бұрын
Фишка в том, что pandas, numpy и пр. - расширения на C, которые работают напрямую с памятью, не создавая промежуточных python объектов. Так что скорость должна быть сравнима с БД. А вот если будете строки, которые обычные str сортировать или int, то тогда всё будет очень плохо.
@funkindy
@funkindy 4 жыл бұрын
@@TyVik с этим согласен
@NMelis
@NMelis 5 жыл бұрын
и что юзать тогда вместо order_by("?")
@kostyaminkov5659
@kostyaminkov5659 4 жыл бұрын
создай масив с полями таблицы, в пайтоне импортируй рандом, а в ордер уже закидуй рандомное поле с твоего массива
@NMelis
@NMelis 11 ай бұрын
@@kostyaminkov5659 ну такое себе решение
@NMelis
@NMelis 11 ай бұрын
from django.db.models.functions import Random random_records = YourModel.objects.annotate(random_number=Random()).order_by('random_number')
@peas8556
@peas8556 2 жыл бұрын
Зздззз
@hansolo5665
@hansolo5665 4 жыл бұрын
хранить деньги в decimal field ? он серьезно ?
@Furkas91
@Furkas91 3 жыл бұрын
почему нет?
@user-jd4rl7im6d
@user-jd4rl7im6d 2 жыл бұрын
@@Furkas91 в долларах надо хранить!
Начинаем Django приложение правильно
37:02
50 оттенков celery / Олег Чуркин (TechOps)
49:02
Python Channel
Рет қаралды 24 М.
MEGA BOXES ARE BACK!!!
08:53
Brawl Stars
Рет қаралды 34 МЛН
бесит старшая сестра!? #роблокс #анимация #мем
00:58
КРУТОЙ ПАПА на
Рет қаралды 3,2 МЛН
DO YOU HAVE FRIENDS LIKE THIS?
00:17
dednahype
Рет қаралды 32 МЛН
MEU IRMÃO FICOU FAMOSO
00:52
Matheus Kriwat
Рет қаралды 37 МЛН
Решаем тестовое задание на позицию junior python backend разработчик
21:18
𝐧𝐞𝐫𝐝𝐢𝐳𝐚𝐲-𝐜𝐨𝐝𝐞
Рет қаралды 12 М.
Best mobile of all time💥🗿 [Troll Face]
0:24
Special SHNTY 2.0
Рет қаралды 1,1 МЛН
YOTAPHONE 2 - СПУСТЯ 10 ЛЕТ
15:13
ЗЕ МАККЕРС
Рет қаралды 126 М.
В России ускорили интернет в 1000 раз
0:18
Короче, новости
Рет қаралды 728 М.
Хотела заскамить на Айфон!😱📱(@gertieinar)
0:21
Взрывная История
Рет қаралды 4,4 МЛН