Category index for “database”
Ловушка при подсчете связанных объектов в Django
Задача: для каждого объекта подсчитать количество связанных объектов, удовлетворяющих определенному условию.
Пробуем JSON в Django и PostgreSQL (и сравниваем с MongoDB)
В Django 1.9 будет добавлено поле JSONField, его можно использовать с базой данных PostgreSQL >= 9.4. Давайте попробуем с ним поработать и оценить, насколько оно удобно.
Отладка SQL в django тестах
В django тестах можно замерять количество сделанных SQL запросов:
def test_home(self): with self.assertNumQueries(1): response = self.client.get('/') self.assertEqual(response.status_code, 200)
Если код в контексте
assertNumQueries
сделает иное количество обращений к БД, чем ожидается (здесь 1), то тест выдает ошибку. Но когда такой тест не проходит, бывает трудно определить лишний отправленный запрос. Для отладки такого случая удобно вывести в консоль отправленные SQL запросы. Далее опишу, как этого добиться.Timestamp и ObjectId в mongoDB
У каждой записи в mongoDB есть поле
_id
, которое должно быть уникальным в коллекции. По умолчанию тип этого поля - ObjectId, и оно присваивается автоматически, если поле не заполнено при сохранении.Давайте рассмотрим, что из себя представляет тип ObjectId.
Вложенные SQL запросы в Django
Вы знали, что Django ORM умеет делать вложенные SQL запросы? К своему стыду я узнал это не так давно.
Что нужно знать об индексах в mongodb
Недавно закончил курс “M101P: MongoDB for Developers” (он периодически повторяется, например следующий стартует в апреле). В процессе прохождения натолкнулся на некоторые интересные моменты.
Кеширование queryset.count в django
Как-то обнаружил, что у меня идут несколько одинаковых запросов вида
SELECT COUNT(*) ...
. Оказалось (да, для меня это было новостью :) ), что методqueryset.count()
в джанго кешируется по особому. Но лучше начать рассказ издалека.Оптимизация админки django
Как известно, чем меньше запросов к базе данных делает сайт, тем лучше производительность. Обычно админка - часть сайта с меньшим трафиком, но все же хорошо, если от туда не идут лишние запросы. Это и приятней в пользовании, т.к. страница отдается быстрее, и все-таки разгружает сервер.
В этом посте я рассмотрю некоторые способы уменьшения количества запросов из админки к БД при использовании
__unicode__
, содержащего поля связанного объекта (ForeignKey). Думаю, глядя на примеры станет понятнее.